我的表格中有列和行,如下所示
col0 col1 col2 col3 col4
----------------------------
1 A 1 100 AA
2 B 2 200 BB
3 B 1 100 AA
4 A 2 200 BB
我希望最终结果是
col0 col1 col2 col3 col4
----------------------------
1 A 1 100 AA
2 B 2 200 BB
OR
col0 col1 col2 col3 col4
----------------------------
3 B 1 100 AA
4 A 2 200 BB
我想删除第一行和第二行或第三行和第四行但是基于col1,正如您所看到的,他们彼此不一样除了col0之外的行,因为col0是主键。我该如何处理sql server express 2012?
答案 0 :(得分:1)
这是删除第一对重复记录的选项。您可以根据四个数据列的分区分配行号。在CTE中执行此操作,然后从行号为1的CTE中删除所有记录。
WITH cte AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY col2, col3, col4 ORDER BY col0) rn
FROM yourTable
)
DELETE
FROM cte
WHERE rn = 1
按照以下链接进行演示,显示我的CTE逻辑是正确的。
答案 1 :(得分:0)
您可以使用此
DELETE FROM yourTable
WHERE col0 NOT IN ( SELECT MIN(col0) FROM yourTable GROUP BY col1)