查詢刪除重復數據,只保留一條記錄:
1.根據單字段,查詢表中該字段重復出現記錄:
SELECT * FROM Table
WHERE Parameter IN
(SELECT Parameter FROM Table
GROUP BY Parameter HAVING COUNT(Parameter ) > 1)
分析:
SELECT Parameter FROM Table
GROUP BY Parameter HAVING COUNT(Parameter ) > 1
根據字段分組,查詢出表中出現重復(字段數量>1)的字段集
-----------------------------華麗的分割線---------------------------------
2.根據單字段,刪除表中該字段重復出現記錄,保留最小主鍵ID
DELETE FROM Table
WHERE Parameter IN
(SELECT Parameter FROM Table
GROUP BY Parameter HAVING COUNT(Parameter) > 1)
AND ID NOT IN
(SELECT MIN(ID) FROM Table
GROUP BY Parameter HAVING COUNT(Parameter)>1)
-----------------------------華麗的分割線---------------------------------
3.根據多個字段查詢表中重復的記錄
SELECT * FROM Table a
WHERE EXISTS
(SELECT Para1 ,Para2 FROM Table b
WHERE a.Para1 = b.Para1 AND
a.Para1 = b.Para2 GROUP BY Para1 ,Para2
HAVING COUNT(*) > 1 )
-----------------------------華麗的分割線---------------------------------
4.根據多個字段 刪除表中重復的記錄,保留最小主鍵記錄
DELETE A
FROM Table A ,
(SELECT Para1,Para2 FROM Table
GROUP BY Para1,Para2
HAVING COUNT(*) > 1 ) B
WHERE A.Para1=B.Para1 AND a.Para2= b.Para2
AND A.ID NOT IN (SELECT MIN(ID) AS ID
FROM Table
GROUP BY Para1,Para2
HAVING COUNT(*) > 1)
-----------------------------華麗的分割線---------------------------------
5.查詢多個字段重復記錄,不包含最小主鍵ID
SELECT * FROM Table a
WHERE EXISTS
(SELECT Para1,Para2 FROM Table b
WHERE a.Para1 = b.Para1 AND a. Para2 = b.Para2
GROUP BY Para1,Para2
HAVING COUNT(*) > 1)
AND ID NOT IN
(SELECT MIN(ID) FROM Table
GROUP BY Para1,Para2
HAVING COUNT(*)>1)
-----------------------------華麗的分割線---------------------------------
