如何从 2 个表中选择最近的日期时间

Posted

技术标签:

【中文标题】如何从 2 个表中选择最近的日期时间【英文标题】:How do i select the most recent datetime from 2 tables 【发布时间】:2018-06-27 17:02:28 【问题描述】:

我已经四处寻找,但找不到我正在寻找的答案。

我有两个表,每个表都有一个名为 last_update_date 的日期字段。我想搜索两个表中的哪一个具有最近的日期并且只返回那个日期。

我尝试了这个查询,希望它能对两个表的 last_update_date 字段进行排序并返回该结果,但查询不起作用。任何帮助将不胜感激。

"Select last_update_date from Table1, Table2 order by last_update_date DESC Limit 1"

【问题讨论】:

是否有对其他表的引用或要加入的任何内容?您可以在两个表上执行 UNION ALL 并从中选择最大日期。您想要的表格上是否有任何标识符,或者只是 lastupdate 日期本身? 【参考方案1】:
SELECT MAX(last_update_date)
FROM (
    SELECT MAX(last_update_date) as last_update_date
    FROM Table1
    UNION ALL
    SELECT MAX(last_update_date)
    FROM Table2
) tMax

【讨论】:

这是最好的答案。 我必须首先为没有更具体而道歉。当我运行查询时,这非常有效。问题是我试图将语句放在 php PDO 语句中。当我这样做时,我得到一个空白返回 $sql = $db->prepare("SELECT MAX(last_update_date) FROM ( SELECT MAX(last_update_date) as last_update_date FROM Table1 UNION ALL SELECT MAX(last_update_date) FROM Table2 ) tMax"); $sql->执行(); $results = $sql->fetch(PDO::FETCH_ASSOC); $extract_date = $results['last_update_date'];回声 $extract_date; 知道了,我不得不将 $results['last_update_date'] 切换到 $results['MAX(last_udpate_date')] 。谢谢大家的帮助【参考方案2】:
select * from 
( select last_update_date from table1 
  UNION ALL 
  select last_update_date from table2 
) order by last_update_date;

【讨论】:

如果 mysql 有最大值,可能仍然使用联合从每个表中选择 max(last_update_date),因此在获取最大日期之前,您不会从两个表中选择每条记录 是的,你是 100% 正确的,从两个表中获取最大值会更快。【参考方案3】:
SELECT MAX(A.last_update_date) 
 (SELECT last_update_date FROM Table1
  UNION ALL
  SELECT last_update_date FROM Table2) A;

【讨论】:

以上是关于如何从 2 个表中选择最近的日期时间的主要内容,如果未能解决你的问题,请参考以下文章

使用 Athena / Presto 从多个表返回 SQL 数据,受 1 个表中的日期范围限制

同时从四个表中获取按日期分组的聚合值

内部联接仅从第二个表中选择基于日期的一行

一次从多个分区中选择

Oracle:将两个表与一个公共列加上第二个表中的一个附加列(最新生效日期)连接以选择其他列

Laravel:如何从具有关系的 3 个表中获取数据