Mysql sql选择现在之前的最大日期
我的桌子上有可能比现在高的日期。我想用相应的行获得比现在更低的最大日期。我试着先去约会,然后再去约会 我自己想出了:Mysql sql选择现在之前的最大日期,mysql,Mysql,我的桌子上有可能比现在高的日期。我想用相应的行获得比现在更低的最大日期。我试着先去约会,然后再去约会 我自己想出了: 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 o
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;
我只得到了正确的最大日期,但对应的行是错误的。有什么帮助吗?如果您也需要其余的值,最容易使用的方法是:
如果没有比当前选择的值大且比现在小的值,则它是以前的最大值。谢谢,它可以工作。为什么不使用max函数?因为max是一个聚合函数,所以要正确使用它,必须使用group by。但是,如果按id_系列或名称分组,则仅选择id_系列和maxe.date的值。您可以添加更多的列,但需要在每个列上放置一个聚合函数,但没有一个列表示与左边的行相同。在大多数方言中,如果不进行聚合,就不可能添加额外的列,在MySQL中,您可以这样做,但它只会选择任意一行。可以通过分组找出最大值,然后重新加入原始表以获得其余列。
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()
)