我得到的表格中的日期可能早于 now()。我想获得低于 now() 日期的最大值以及相应的行。我试图首先获取 now() 之前的日期,然后从中获取最大值。
我自己想出了:
select sub.*,MAX(sub.DATE)
From (
SELECT s.id_series,s.name,e.title,e.DATE
FROM episodes e
JOIN series s ON s.id_series=e.id_series
WHERE e.DATE < now()
) as sub
JOIN episodes ep on sub.id_series=ep.id_series
GROUP BY sub.name;
我只得到正确的最大日期,但相应的行是错误的。有帮助吗?
最佳答案
如果您还想要其余的值,最简单的方法是使用 exists
:
SELECT s.id_series,s.name,e.title,e.DATE
FROM episodes e
JOIN series s ON s.id_series=e.id_series
WHERE e.DATE < now() AND NOT EXISTS (
SELECT *
FROM episodes e2
WHERE e2.id_series = e.id_series AND e2.DATE > e.DATE AND e2.DATE < now()
)
如果没有大于当前选中的值且小于now()的值,则为now()之前的最大值。
关于mysql - sql选择现在之前的最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41081504/