ORACLE刪除表中某一列重複的行

來源:互聯網
上載者:User

ORACLE  刪除表中某一列重複的行

表名:T4

CREATE TABLE TEST.T4
(
ID NUMBER(10),
FIRSTNAME VARCHAR2(50 CHAR),
LASTNAME VARCHAR2(50 CHAR)
)

ID 為主鍵,刪除所有ID重複的行(不管其他列是否重複)

DELETE FROM T4 C
WHERE C.ROWID NOT IN ( SELECT MAX (A.ROWID)
FROM T4 A
GROUP BY A.ID);

思路:

1.先將所有行分組後取得最大ROWID。其結果就包含不重複的行,及重複行的最後一筆的ROWID

  SELECT MAX (A.ROWID)
FROM T4 A
GROUP BY A.ID;

2.將表中除此以外的行刪掉就可以了.

測試資料:

INSERT INTO T4     VALUES (1, 'F1', 'L1');

INSERT INTO T4 VALUES (2, 'F2', 'L2');

INSERT INTO T4 VALUES (3, 'F3', 'L3');

INSERT INTO T4 VALUES (2, 'F2', 'L2');

INSERT INTO T4 VALUES (3, 'F3', 'L3');

1 F1 L1
2 F2 L2
2 F2 L2
3 F3 L3
3 F3 L3

測試結果:

1 F1 L1
2 F2 L2
3 F3 L3

另外一種方法:

DELETE FROM tb1      WHERE     tb1.c1 IN (  SELECT tb1.c1                               FROM tb1                           GROUP BY tb1.c1                             HAVING COUNT (tb1.c1) > 1)            AND tb1.ROWID NOT IN (  SELECT MIN (tb1.ROWID)                                      FROM tb1                                  GROUP BY tb1.c1                                    HAVING COUNT (tb1.c1) > 1);
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.