在該樣本中,我們將使用下表,它具有重複的 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最小的記錄