我想筛选我的表并在名为“date”的列中选择日期为最新日期的所有行如果可能的话,我想使用where函数。注意,我有许多行的日期相同。e、 我有一张按产品列出所有销售日的表格,但我只想看最近几天的销售情况。
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);
ncgqoxb02#
一种选择是使用exists逻辑:
SELECT * FROM yourTable t1 WHERE NOT EXISTS (SELECT 1 FROM yourTable t2 WHERE t2.date > t1.date);
在mysql 8+上,我喜欢使用 RANK 在这里:
RANK
WITH cte AS ( SELECT *, RANK() OVER (ORDER BY date DESC) rnk FROM yourTable ) SELECT * FROM cte WHERE rnk = 1;
您还可以将gordon的子查询方法用于第三个选项。
tuwxkamq3#
您可以使用此查询获取日期为最新日期的整个记录列表:
SELECT * FROM `table` WHERE date=(SELECT MAX(date) FROM `table`)
3条答案
按热度按时间gstyhher1#
可以使用子查询:
如果您想要每个产品的最后一天,那么您将使用相关的子查询。
ncgqoxb02#
一种选择是使用exists逻辑:
在mysql 8+上,我喜欢使用
RANK
在这里:您还可以将gordon的子查询方法用于第三个选项。
tuwxkamq3#
您可以使用此查询获取日期为最新日期的整个记录列表: