SQL Server尋找與刪除表重複記錄sql語句

來源:互聯網
上載者:User

在該樣本中,我們將使用下表,它具有重複的 PK 值。在該表中,主鍵是兩列(col1、col2)。我們無法建立唯一索引或主鍵約束,因為這兩行具有重複的 PK。該過程示範如何識別和重複資料刪除的主鍵。
 

 代碼如下 複製代碼
create table t1(col1 int, col2 int, col3 char(50))
insert into t1 values (1, 1, 'data value one')
insert into t1 values (1, 1, 'data value one')
insert into t1 values (1, 2, 'data value two')

第一步是識別哪些行具有重複的主索引值:

 代碼如下 複製代碼

SELECT col1, col2, count(*)
FROM t1
GROUP BY col1, col2
HAVING count(*) > 1


5.從原始表中重複資料刪除的行。例如:

 代碼如下 複製代碼

DELETE t1
FROM t1, holdkey
WHERE t1.col1 = holdkey.col1
AND t1.col2 = holdkey.col2

上面的方法是來自microsoft網站,下面我來收藏了網站的一些解決辦法,大家可參考。

尋找表中多餘的重複記錄(多個欄位)

 代碼如下 複製代碼
select * from vitae a  where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

4、刪除表中多餘的重複記錄(多個欄位),只留有rowid最小的記錄

重複資料刪除記錄(多個欄位)

 代碼如下 複製代碼
delete from vitae a  where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)  and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5、SQL Server尋找表中多餘的重複記錄(多個欄位),不包含rowid最小的記錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.