这是我的示例记录集。 我想选择(确认后删除)所有具有相同盖子、相同 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)。
看起来您在下一个查询中需要:
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