id date latest seq
1 2020 Y 2
1 2019 N 1
2 2020 Y 3
3 2020 Y 4
4 2020 Y 5
4 2020 N 5
5 2020 Y 6
5 2020 N 6
此处的ID 1,2,3具有diff seq num并被视为不同的记录。但是ID 4和ID 5具有相同的序列号,并且按照我的要求被视为重复项。因此,我必须删除那些带有“最新”“ N”的内容,并且我的输出表应如下图所示。
id date latest seq
1 2020 Y 2
1 2019 N 1
2 2020 Y 3
3 2020 Y 4
4 2020 Y 5
5 2020 Y 6
如何使其在SQL语句中发生。请帮忙。
答案 0 :(得分:1)
如果您实际上要删除这些“重复的”记录,请尝试:
DELETE
FROM yourTable t1
WHERE
latest = 'N' AND
EXISTS (SELECT 1 FROM yourTable t2
WHERE t2.id = t1.id AND t2.seq = t1.seq AND
t2.latest = 'Y');
如果您只是想查看/选择期望的输出,请使用:
SELECT *
FROM yourTable t1
WHERE
latest = 'Y' OR
NOT EXISTS (SELECT 1 FROM yourTable t2
WHERE t2.id = t1.id AND t2.seq = t1.seq AND
t2.latest = 'Y');
这是第二个选择查询的演示:
答案 1 :(得分:0)
从很多方面来说,我都会选择"scripts": {
"test": "export NODE_ENV=test || SET NODE_ENV=test && nodemon --exec npm start",
"golive": "export NODE_ENV=go || SET NODE_ENV=go && nodemon --exec npm start"
},
来实现它,
not exists
答案 2 :(得分:0)
我认为您可以使用聚合:
select id, date, max(latest) as latest, seq
from t
group by id, date, seq;