SO上有很多帖子,其中提供的解决方案是以一种方式取出行或与其他行重复形式,只留下1行。
我正在寻找的是如何删除临时表中没有唯一ID的所有行:
ID other_values
-----------------------------
1 foo bar
2 bar baz
2 null
2 something
3 else
我不关心其他价值观;一旦ID
不唯一,我想要所有行,结果是:
ID other_values
-----------------------------
1 foo bar
3 else
我该怎么做?
答案 0 :(得分:3)
试试这个:
--delete all rows from my temp-table that do not have a unique ID
DELETE from MYTABLE
WHERE ID IN (SELECT ID FROM MYTABLE GROUP BY ID HAVING COUNT(*) > 1)
答案 1 :(得分:1)
我会将DELETE命令与子查询结合使用来检测重复项
DELETE
FROM mytable
WHERE ID IN (SELECT ID FROM mytable GROUP BY ID HAVING COUNT(*) > 1)
答案 2 :(得分:-1)
使用Cte删除行。
WITH cte
AS (
SELECT id
,Other_values
,ROW_NUMBER() OVER (
PARTITION BY id ORDER BY id
) rownum
FROM mytable
)
DELETE
FROM cte
WHERE rownum > 1
答案 3 :(得分:-2)
计算大于1的ID。然后删除所有这些ID。
编辑: 从TABLE中删除VALUE IN(从VALUE中选择VALUE按VALUE计数(*)> 1按VALUE分组);