0

可能重复:
从 Oracle 中的表中删除重复行

这是我目前拥有的示例:

ID        Name1    Name2
ABC123    Bob      Jones
ABC123    Bob      Smith
ABC123    Bob      Hammond
DEF234    Tim      Whatever

我希望上面的表格看起来像这样:

ID        Name1    Name2
ABC123    Bob      Jones
DEF234    Tim      Whatever

我想删除共享 ID 字段的所有行,我不在乎保留或删除哪些行,只是总行数等于唯一 ID 的数量。

4

3 回答 3

3
DELETE FROM YOURTABLE Y WHERE ROWID > (SELECT min(rowid) FROM YOURTABLE X
WHERE X.ID = Y.ID)
于 2012-08-24T21:24:44.360 回答
0
 DELETE FROM your_table
      WHERE ROWID IN (
               SELECT rid
                  FROM (SELECT ROWID rid,
                           ROW_NUMBER () OVER (PARTITION BY ID ORDER BY ROWID) rn
                         FROM your_table)
                WHERE rn <> 1);
于 2012-08-25T07:18:51.980 回答
0

如果由于某种原因您没有全局唯一 ID,那么这样的事情应该可以工作:

DELETE FROM Table WHERE CONCAT(ID,Name1,Name2) NOT IN ( 
       SELECT MIN(CONCAT(ID,Name1,Name2)) FROM Table GROUP BY ID)
于 2012-08-24T21:24:53.177 回答