来自MySQL中3个不同表的3个连接列的最大值

时间:2017-07-22 08:33:43

标签: mysql sql

我已尝试解决此查询问题,但未找到可行的解决方案。

洞察我的数据库关系和结构:

我有3个表,其中2个表的外键ID指向第3个表中的本机ID键,所有这三个表都在sql datetime值中有日期。

洞察我的目标:

我想从这三个日期中找到最新日期,并在php中输出该单个值。为了实现这个目标,我加入了三个表并使用了内置的sql最大函数来检索三个选定列的最新数据。

洞察我的sql代码:

SELECT GREATEST(Reacties.datum, Deelnemers.datum ,Skirms.submit_datum) 
FROM Skirms 
INNER JOIN Deelnemers ON Skirms.ID = Deelnemers.skirms_fk 
INNER JOIN Reacties ON Skirms.ID = Reacties.skirms_fk 
WHERE Skirms.ID = 1

上述代码存在问题

执行上述查询时,遗憾的是它没有返回任何值。

1 个答案:

答案 0 :(得分:0)

这可能会返回多行。您可以在GREATEST之前申请MAX:

SELECT GREATEST(MAX(Reacties.datum), MAX(Deelnemers.datum) ,MAX(Skirms.submit_datum)) 

但是如果您只想从三个表中获取最新日期,则无需加入这些表,请选择每个最大日期,然后选择最大日期:

select max(maxDate)
from
 ( SELECT max(datum) as maxDate
   FROM Skirms 
   WHERE ID = 1

   UNION ALL

   SELECT max(datum) as maxDate
   FROM Deelnemers
   WHERE skirms_fk = 1

   UNION ALL

   SELECT max(datum) as maxDate
   FROM Reacties
   WHERE skirms_fk = 1
 ) AS dt