从表中选择连续的重复记录

问题描述 投票:0回答:1

这是我的示例记录集。 我想选择(确认后删除)所有具有相同盖子、相同 sid、相同 stype、相同出价和 0 或 null noOfDays 的连续重复记录。应保留最新的记录,并删除所有较早的记录。

摆脱 盖子 希德 类型 流体 尿素 出价 日期 周日
1 123 106963 P 0 M 5243 2024-06-24 00:00:00 1
2 123 106977 P 0 M 5243 2024-06-24 00:00:00 1
3 123 114234 P 0 M 5243 2024-06-24 00:00:00 2
4 123 106973 P 0 M 5243 2024-06-25 00:00:00 9
5 123 106975 P 0 M 5243 2024-07-03 00:00:00 1
6 123 106964 P 0 M 5243 2024-07-03 00:00:00 1
7 123 107394 P 0 M 5243 2024-07-03 00:00:00 1
8 123 106964 P 0 M 5243 2024-07-03 00:00:00 3
9 123 107394 P 0 M 5243 2024-07-05 00:00:00 4
10 123 107395 P 0 M 5243 2024-07-08 00:00:00 25
11 123 106964 P 0 M 5243 2024-08-01 00:00:00 1
12 123 107394 P 0 M 5243 2024-08-01 00:00:00 2
13 123 107395 P 0 M 5243 2024-08-02 00:00:00 0
14 123 107395 P 0 M 5243 2024-08-02 00:00:00 0
15 123 107395 P 0 M 5243 2024-08-02 00:00:00 7
16 123 106971 P 0 M 5243 2024-08-08 00:00:00 5
17 123 106974 P 0 M 5243 2024-08-12 00:00:00 1
18 123 106976 P 0 M 5243 2024-08-12 00:00:00 3
19 123 106980 P 0 M 5243 2024-08-14 00:00:00 0

给定数据集的预期输出:

摆脱 盖子 希德 类型 流体 尿素 出价 日期 周日
13 123 107395 P 0 M 5243 2024-08-02 00:00:00 0
14 123 107395 P 0 M 5243 2024-08-02 00:00:00 0

说明: Rid 13、14 和 15 的行具有相同的盖子、相同的 sid、相同的 stype、相同的出价和 0 noOfDays。而且它们是按顺序一个接一个地出现的,所以我想保留最新的(删除 15)并删除其他两个(删除 13 和 14)。

mysql
1个回答
0
投票

看起来您在下一个查询中需要:

SELECT t1.*
FROM table t1
JOIN table t2 USING (lid, sid, stype, uid, urole, bid, rdate)
WHERE t1.ndays = 0
  AND t1.rid = t2.rid - 1
© www.soinside.com 2019 - 2024. All rights reserved.