我有一个具有以下示例格式的表:
ID Name
1 NULL
1 NULL
2 HELLO
3 NULL
3 BYE我的目标是用相同的IDS删除重复的行,但使用限制。根据这个例子,我需要删除ID-1的行和ID-3且没有值(NULL)的行。
我会坚持在桌子上:
ID Name
1 NULL
2 HELLO
3 BYE我如何在sql server中做到这一点?谢谢
发布于 2014-03-08 18:45:44
要选择数据,可以使用一个简单的CTE (公共表表达式);
WITH cte AS (
SELECT id, name,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY name DESC) rn
FROM myTable
)
SELECT id,name FROM cte WHERE rn=1;一个要测试的SQLfiddle。
如果您的意思是删除表中的重复项,而不只是选择数据而不更新任何内容,则可以使用相同的CTE;
WITH cte AS (
SELECT id, name,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY name DESC) rn
FROM myTable
)
DELETE FROM cte WHERE rn<>1;要测试的另一个SQLfiddle,并记住在运行来自Internet上随机人员的破坏性SQL语句之前始终备份数据。
https://stackoverflow.com/questions/22273367
复制相似问题