Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL从多个列中选择最近的_Mysql_Nested Select - Fatal编程技术网

MySQL从多个列中选择最近的

MySQL从多个列中选择最近的,mysql,nested-select,Mysql,Nested Select,我有一个具有多个日期列的表,下面是我的表列示例:tbl.user\u id,tbl.date\u 1,tbl.date\u 2,tbl.date\u 3 我需要提出一个查询,返回user\u id和most\u recent\u date,其中mostmost\u recent\u date是日期1、日期2和日期3之间的最近日期。我想我需要一个嵌套的select,但我无法计算出它的逻辑。我希望有人能在这里为我指出正确的方向。您尝试过最伟大的()函数吗 下面是一个简单的例子: SELECT

我有一个具有多个日期列的表,下面是我的表列示例:
tbl.user\u id
tbl.date\u 1
tbl.date\u 2
tbl.date\u 3


我需要提出一个查询,返回
user\u id
most\u recent\u date
,其中most
most\u recent\u date
是日期1、日期2和日期3之间的最近日期。我想我需要一个嵌套的select,但我无法计算出它的逻辑。我希望有人能在这里为我指出正确的方向。

您尝试过最伟大的()函数吗

下面是一个简单的例子:

SELECT
    userId,
    greatest(dt1, dt2, dt3)
FROM testTbl;
您可能已经像在大多数编程语言中一样尝试过Max()函数。然而,在SQL中,Max是一个聚合函数。您只能在其中指定一个字段,它将返回该列中的最大值,并根据分组依据分组


MySQL中的GestEnter()函数相当于大多数其他语言的Max()函数。

认真考虑修改你的模式。任何时候你发现自己有列举的专栏(上面,比如说,2),你可以确定你的设计是次优的。我的答案不包括草莓的评论,因为它只是直接回答了这个问题,但是是的。。。即使只有2个带编号的字段,也表示架构不正确。。。根据您要做的,我建议您确保您的模式是好的。例如,如果你的3个日期是不同类型的日期,例如,可能有某件事的截止日期。。。和一个有效完成的日期,你可能想从这两个日期中抽出最近的一个。但是,如果这些值与您只想保留其中3个值的逻辑值完全相同。。。那不好!谢谢-我刚才用的桌子只是一个例子。该表实际上是从另一个查询创建的tmp表