筛选mysql表以查找最长日期

vql8enpb  于 2021-07-26  发布在  Java
关注(0)|答案(3)|浏览(323)

我想筛选我的表并在名为“date”的列中选择日期为最新日期的所有行
如果可能的话,我想使用where函数。
注意,我有许多行的日期相同。e、 我有一张按产品列出所有销售日的表格,但我只想看最近几天的销售情况。

gstyhher

gstyhher1#

可以使用子查询:

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);
ncgqoxb0

ncgqoxb02#

一种选择是使用exists逻辑:

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的子查询方法用于第三个选项。

tuwxkamq

tuwxkamq3#

您可以使用此查询获取日期为最新日期的整个记录列表:

SELECT *
FROM `table`
WHERE date=(SELECT MAX(date) 
            FROM `table`)

相关问题