gpt4 book ai didi

mysql - SQL - 删除较早日期的所有重复项

转载 作者:行者123 更新时间:2023-11-29 10:07:29 27 4
gpt4 key购买 nike

我的数据库中有此示例数据:

Order number | Date       | Item
23 | 2017-05-23 | Apple
23 | 2017-05-23 | Banana
24 | 2017-05-24 | Apple
23 | 2018-03-21 | Apple
23 | 2018-03-21 | Banana

这可能看起来像一个奇怪的 SQL 查询,但我想获取每天的所有订单号及其包含的日期和项目,但如果订单号已在多个日期注册,我只想要“最旧的”实例。

在这种情况下答案应该是:

Order number | Date       | Item
23 | 2017-05-23 | Apple
23 | 2017-05-23 | Banana
24 | 2017-05-24 | Apple

感谢您的帮助。

最佳答案

除了 Gordon 提供的之外,编写此查询的更标准方法是仅加入子查询,该子查询查找每个订单/项目组的最新记录:

SELECT o1.*
FROM orders o1
INNER JOIN
(
SELECT o_num, item, MIN(Date) AS min_date
FROM orders
GROUP BY o_num, item
) o2
ON o1.o_num = o2.o_num AND o1.item = o2.item AND o1.Date = o2.min_date;

在支持基本分析函数的 MySQL 8+ 中,我们可以更简洁地将此查询编写为:

SELECT o_num, Date, item
FROM
(
SELECT o_num, Date, item,
ROW_NUMBER() OVER (PARTITION BY o_num, item ORDER BY Date) rn
FROM orders
) t
WHERE rn = 1;

关于mysql - SQL - 删除较早日期的所有重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51636511/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com