Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql sql选择现在之前的最大日期_Mysql - Fatal编程技术网

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()
)