回答
您需要在原始表創建一個唯一的密鑰(它可以只是一個序列號),並且你可以選擇匹配或不匹配的記錄(25%或相反)
我強烈推薦使用自動增加的ID列,
但如果你不能這樣做:
DELETE FROM WHERE a.c1 =(SELECT c1 FROM b)AND a.c2 =(SELECT c2 FROM b)AND a.c3 =(SELECT c3 FROM b)
對不起,剛纔意識到它只適用於一行...
好吧,那麼我得到的僅僅是製造一個ID列,對不起......
要查看所有行A
除了那些在B
:
SELECT * FROM A
WHERE (field1, field2, ..., fieldN) NOT IN
(SELECT *
FROM B
) ;
要真正從表中刪除A
在B
中的行:
DELETE FROM A
WHERE (field1, field2, ..., fieldN) IN
(SELECT *
FROM B
) ;
@Conrad:它工作在我的MySQL(5.0.51)副本中。你測試過哪個版本? – 2011-04-21 08:10:59
我有5.1它沒有爲我工作 – osmanabi 2011-04-21 08:56:40
我的錯誤,我做了一個非編輯,所以我可以改變我的投票,我刪除了我的評論 – 2011-04-21 15:10:25
鑑於您正在比較多個字段,您需要使用exists或joi ñ。因爲你正在尋找刪除它更容易的只是使用存在。
delete from
Tablea
Where
Exists(
Select 1
from tableb
where tablea.fielda = tableb.fielda
And tablea.fieldb = Tableb.fieldb
And...)
我有一個非常類似的要求,你除了礦山,B只是A. 的一個子集。如果你還在尋找一個答案:
SELECT * FROM A WHERE NOT EXIST
(SELECT * FROM B WHERE A.field1 = B.field1 AND A.field2 = B.field2 etc)
您需要指定與在A和B上進行內部連接相同的條件。
- 1. 從表中減去一列,同時從另一個表中減去一列
- 2. 從一個表中減去另一個表中的總和
- 3. 在PostgreSQL中從另一個表中減去一個表
- 4. SML:從另一個列表中減去一個列表
- 5. 從另一個表中減去一個表的行
- 6. 從另一個減去CSV列表?
- 7. Mysql從另一個表中減少值
- 8. 如何從另一個表中「減去」一張表?
- 9. 從另一個減去一個圖像
- 10. 減去一個查詢從另一個
- 11. 一個。減去從另一個
- 12. 從一個表中減去另一個表中的金額總和
- 13. 如何只從一個表中減去另一個表中的行
- 14. mySQL - 減去另一個表中存在的值
- 15. 一桌減去另一個
- 16. MySQL - 從另一個減去一個查詢集
- 17. 減去一次從另一個
- 18. 從另一個圖像中減去另一個圖像
- 19. MySQL從另一個表中替換表
- 20. 如何從同一個表中的另一行中減去一行?
- 21. 一個表中的值減去另一臺價值
- 22. 從另一個表的MySQL
- 23. MySQL的:從另一個表
- 24. 從另一個文件中減去一個文件中的行
- 25. 按日期在MySQL中從另一個行中減去另一行
- 26. UIBezierPath從另一個UIBezierPath減去
- 27. 安卓減去從另一個
- 28. 如何從另一個使用opencv從另一個框架中減去一幀
- 29. MySQL:如何從另一個查詢中減去JOIN的結果?
- 30. 從data.frame中減去另一個data.frame中的列表中的列表
當你說減去時我很困惑。你是指過濾器嗎?如果你在另一個表格上過濾一個表格,你需要決定哪一列或哪兩列表格相關聯,以便根據你的過濾器模式。 – RetroCoder 2011-04-21 00:45:21
是的,我想從A中篩選出B中已有的所有數據A – osmanabi 2011-04-21 00:49:50
您想從A表中刪除出現在B中的任何字段,因此不再有公共條目了嗎? – 2011-04-21 00:50:14