sql现在选择最大日期

时间:2016-12-10 23:43:12

标签: mysql

我得到的表格中的日期可能高于现在()。我希望最大值低于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;

我只获得了正确的最大日期,但相应的行是错误的。有什么帮助吗?

1 个答案:

答案 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()之前的最大值。