在相同架構表中複製具有重複處理的行
您希望將行從表“srcTable”傳輸到“destTable”,同時防止重複。然而,在 WHERE 子句中使用子查詢並不能有效地解決您的問題。
使用 WHERE 子句解決問題
錯誤在於缺乏適當的子查詢中的子句用於識別重複項。在子查詢中加入必要的條件,如下所示:
INSERT INTO destTable SELECT Field1, Field2, Field3, ... FROM srcTable WHERE NOT EXISTS(SELECT * FROM destTable WHERE (srcTable.Field1 = destTable.Field1 AND srcTable.Field2 = destTable.Field2 ... etc.) )
使用外連接的替代方法
或者,考慮使用外連接以獲得更簡潔的解決方案:
INSERT INTO destTable SELECT s.field1, s.field2, s.field3, ... FROM srcTable s LEFT JOIN destTable d ON (d.Key1 = s.Key1 AND d.Key2 = s.Key2 AND...) WHERE d.Key1 IS NULL
處理來源中的重複項目表
如果您特別關心來源表中的重複行,請考慮在插入語句中使用unique 子句:
INSERT INTO destTable SELECT Distinct field1, field2, field3, ... FROM srcTable
其他建議
以上是如何有效地將行從一個表複製到另一個表,同時防止重複?的詳細內容。更多資訊請關注PHP中文網其他相關文章!