gpt4 book ai didi

sql - 使用两个表仅列出最大日期

转载 作者:行者123 更新时间:2023-11-29 13:58:03 27 4
gpt4 key购买 nike

我有元素和校准表。一个项目可以有多个校准。我需要列出带有 date_expired 校准的项目,但只显示带有“MAX”date_expired 的项目(女巫是必须校准的日期)。意味着如果一个项目有 2 次校准,则只列出具有 MAX 日期的项目。使用 postgress 和 ruby 。我有这样的东西,不知道它是否存在使用 where.. 的更好方法。

SELECT *, date_expired  
FROM Items
LEFT OUTER JOIN Calibrations
ON Calibrations.item_id = Items.id
GROUP BY Items.id, calibrations.date_expired
HAVING calibrations.date_expired ...

如果你能帮我,不知道在哪里引入了MAX(date_expired)。谢谢

更新
元素
身份证名
1 AAA
2 BBB
3 CCC

校准
id item_id date_expired
1 1 2014/12/12
2 1 2015/12/12

结果
id 名称 date_exired
1 AAA 2015/12/12

最佳答案

这应该可以解决问题:

SELECT DISTINCT ON (i.id) 
i.id, i.name, c.date_expired
FROM Items i
JOIN Calibrations c ON c.item_id = i.id
ORDER BY i.id, c.date_expired desc

使用 JOIN 而不是 LEFT JOIN 你只会得到带有校准的项目。然后 DISTINCT ON 过滤结果,为您提供每个项目的单一校准。由于它的选择是基于订单的,因此按 date_expired desc 排序总是为我们提供最新的校准。

关于sql - 使用两个表仅列出最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27427564/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com