我得到的表格中的日期可能高于现在()。我希望最大值低于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;
我只获得了正确的最大日期,但相应的行是错误的。有什么帮助吗?
答案 0 :(得分:1)
如果您还想要其余的值,那么最简单的方法就是使用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()之前的最大值。