2014-07-04 42 views
0

我必須從表中刪除重複項,但我面臨困難,我不想刪除表中的其他行,也想要1副本的重複項,它有汽車信息和重複註冊號EngineNo和ChasisNo。 例如刪除表中的重複項,除了一個和其他人

 RegNo  EngineNo  ChasisNo 
    12345  456789   5678 <--- not delete this 
    12345  456789   5678 <--- delete this 
    12345  456789   5678 <--- delete this 
    34590  987643   2557 <--- not delete this 

回答

0

您是否嘗試過SQL查詢,如下所示?

SELECT 
    RegNo, EngineNo, ChasisNo 
FROM aTable 
GROUP BY 
    RegNo, EngineNo, ChasisNo 

你可以在這個SQLFiddle中嘗試一下:http://sqlfiddle.com/#!2/fa0aab/3。我覺得你的問題更復雜,但你需要添加更多的細節。

enter image description here

0

您可以使用臨時表來存儲不同的值,然後刪除一切,然後插入暫時的。

CREATE TEMPORARY TABLE t (RegNo CHAR(20),EngineNoCHAR(20),ChasisNo CHAR(20)) 

INSERT INTO t 
SELECT DISTINCT RegNo, EngineNo, ChasisNo FROM aTable 

DELETE * FROM aTable 

INSERT INTO aTable 
SELECT * FROM t 
+0

感謝您的考慮,我也想保存其他不明顯的行。 – Fahad

+0

如果有3個重複的記錄,那麼我想保存1並刪除其他2,剩下的非獨特記錄保持不變。 – Fahad

+0

@Pince這將產生確切的結果,'INSERT INTO t SELECT DISTINCT RegNo,EngineNo,ChasisNo FROM aTable'將只選擇具有唯一值的記錄,因此不存在重複 - 每個記錄中的一個。 –