值之间的差异最小的mysql连接?
原则上,我有两个表T1和T2,每个表都包含一个日期字段,我们称之为日期:值之间的差异最小的mysql连接?,mysql,join,left-join,minimum,Mysql,Join,Left Join,Minimum,原则上,我有两个表T1和T2,每个表都包含一个日期字段,我们称之为日期: T1: date | somekey | data ... T2: date | somekey | data ... 我想(左)连接T1和T2,这样结果包含T1中的所有行 现在,对于T1中的每一行,我需要T2的(正好一行)连接的值,其中ABS(DATEDIFF(T1.date,T2.date))是最小值,并且T1.somekey=T2.somekey(如果T2中没有这样的行,则为null)不要在JOIN子句中执行
T1: date | somekey | data ...
T2: date | somekey | data ...
我想(左)连接T1和T2
,这样结果包含T1中的所有行
现在,对于T1中的每一行,我需要T2的(正好一行)连接的值,其中
ABS(DATEDIFF(T1.date,T2.date))
是最小值,并且T1.somekey=T2.somekey
(如果T2中没有这样的行,则为null)不要在JOIN
子句中执行此操作,只需将其放在where
子句中即可
SELECT
*
FROM
T1
LEFT JOIN T2 ON T1.somekey = T2.somekey
WHERE
ABS(DATEDIFF(T1.date,T2.date)) = 1 /*or whatever "minimal" means for you*/
/*or like this:*/ < $yourMinimalValue
不要在
JOIN
子句中执行此操作,只需将其放在WHERE
子句中即可
SELECT
*
FROM
T1
LEFT JOIN T2 ON T1.somekey = T2.somekey
WHERE
ABS(DATEDIFF(T1.date,T2.date)) = 1 /*or whatever "minimal" means for you*/
/*or like this:*/ < $yourMinimalValue
就我所知,DATEDIFF产生一个整数值,表示两个日期之间的天数差,这是什么意思。如果T2中有符合条件的行,则必须有一个差异最小的特定行。很抱歉,我无法更清楚地表达这一点。就我所知,DATEDIFF生成一个整数值表示两个日期之间的天数差,这是什么意思。如果T2中有符合条件的行,则必须有一个差异最小的特定行。抱歉,我无法更清楚地表达这一点。这就是问题所在:minimal不是一个常量。@IARI那么您想选择DATEDIFF最小的行吗?我还不完全清楚你想要完成什么。@akalucas我想这就是他想要的,是的。@tombom是的,这正是我想要的。此外,如果子查询不在from子句中,则它是ok。我想你可以从帖子中删除第一个建议,第二个是有趣的例子。这就是问题所在:minimal不是一个常量。@IARI那么你想选择DATEDIFF最小的行吗?我还不完全清楚你想要完成什么。@akalucas我想这就是他想要的,是的。@tombom是的,这正是我想要的。此外,如果子查询不在from子句中,则它是ok。我想你可以从帖子中删除第一条建议,第二条是有趣的案例。