我試圖將this解決方案應用於MySQL DB中具有重複項的表中的數據。我得到這樣的錯誤:您無法在FROM子句中指定目標表'名稱'進行更新
SQL Error [1093] [HY000]: You can't specify target table 'NAME' for update in FROM clause
DELETE NAME FROM NAME
WHERE NAME.id NOT IN
(SELECT MIN(id)
FROM NAME GROUP BY col1, col2)
也嘗試過分配別名 - 但沒有成功。 這個錯誤的原因是什麼? 它通常指出,SQL腳本可以產生循環過程,但在這裏我實際上沒有看到任何與此有關的 - 很顯然,DELETE
和SELECT
的兩個選擇是分離的 - 引擎必須首先執行SELECT
,然後在WHERE
條件中使用它爲DELETE
。 所以 - 爲什麼會發生這種錯誤,我怎麼能真正重複刪除我的表? =)
您的查詢看起來與您嘗試應用的解決方案的查詢完全無關。他們使用連接,而您正在使用'NOT IN'。 – eggyal
@eggyal我的鏈接指向評論,而不是回答 –
啊,夠公平的;我沒有注意到這一點。該評論是特定於SQL Server的。你會發現答案中給出的連接將在MySQL中工作。 – eggyal