【问题标题】:Filter MYSQL table for with maximum dates筛选具有最大日期的 MYSQL 表
【发布时间】:2020-11-02 13:04:01
【问题描述】:
我想过滤我的表格并在名为“日期”的列中选择日期为最新日期的所有行
如果可能的话,我想使用 'where' 功能。
注意我有很多行具有相同的日期。例如,我有一张按产品列出所有天数的表格,但我只想查看最近天数的销售额。
【问题讨论】:
标签:
mysql
sql
date
where-clause
【解决方案1】:
您可以使用此查询来获取日期为最新记录的完整列表:
SELECT *
FROM `table`
WHERE date=(SELECT MAX(date)
FROM `table`)
【解决方案2】:
一种选择是使用存在逻辑:
SELECT *
FROM yourTable t1
WHERE NOT EXISTS (SELECT 1 FROM yourTable t2 WHERE t2.date > t1.date);
在 MySQL 8+ 上,我喜欢在这里使用RANK:
WITH cte AS (
SELECT *, RANK() OVER (ORDER BY date DESC) rnk
FROM yourTable
)
SELECT *
FROM cte
WHERE rnk = 1;
您也可以使用 Gordon 的子查询方法作为第三种选择。
【解决方案3】:
您可以使用子查询:
select t.*
from t
where date = (select max(t2.date) from t t2);
如果您想要每个产品的最新日期,那么您将使用相关子查询。
select t.*
from t
where date = (select max(t2.date) from t t2 where t2.product = t.product);