输出行以最大日期mysql

时间:2018-11-25 14:22:53

标签: mysql sql

我在下一张表中要检索status = 4和最大日期的行

status  date
  4      2018-11-25
  3      2018-11-24
  4      2018-11-22

预期产量

4 2018-11-25

我已经尝试过此语句,但是它返回错误

SQL

 SELECT * 
 FROM posts 
  WHERE status=4 AND MAX(date)

我在做什么错了?

4 个答案:

答案 0 :(得分:0)

使用order by并获取最新行。在标准SQL中,这将是:

SELECT p.* 
FROM posts p
WHERE p.status = 4 
ORDER BY date DESC
FETCH FIRST 1 ROW ONLY;

FETCH FIRST是此构造的标准SQL。一些数据库使用SELECT TOP (1)LIMIT甚至其他方法。 MySQL使用LIMIT而不是FETCH FIRST

您不能在WHERE子句中使用聚合函数。您可以 HAVING之后的GROUP BY子句中使用它们,但是这种逻辑是不合适的。

答案 1 :(得分:0)

GROUP BY用于status = 4

 SELECT status, MAX(date) as maxdate 
 FROM posts 
 GROUP BY status
 HAVING status = 4

答案 2 :(得分:0)

这是使用子查询执行此操作的一种方法:

127.45

Demo

如果您使用的是MySQL 8+或更高版本,那么我们可以利用分析功能:

SELECT p.*
FROM posts p
WHERE
    status = 4 AND
    date = (SELECT MAX(date) FROM posts WHERE status = 4);

答案 3 :(得分:0)

Select status, max(Date) from table where status =4 group by status;

  

这很简单,只需一个组即可对状态进行分组,并根据状态4计算每个组中的最大日期,其中子句仅用于过滤状态= 4