[英]How to delete 'orphaned' records from second table
如果相應的記錄不存在於另一個表中,我想從表中刪除記錄。
即table1和table2是一對多的關系。 我需要從 table2 中刪除孤立的記錄,其中 table2.id 在 table1 中不存在。
我在 Access 中試過這個:
DELETE * FROM t2 RIGHT JOIN t2 ON t1.id = t2.id WHERE t1.id is NULL
但我收到“JOIN 操作中的語法錯誤”。 我看不出有什么問題。
刪除*
后DELETE
..
我會像這樣解決它:
DELETE FROM t2
WHERE id not in (
SELECT id from t1);
不確定通過加入刪除是否有效。 但是,它需要是LEFT JOIN
,因為您想刪除連接的第一部分中未與任何內容連接的所有行。 此外,您正在將 t2 與自身連接起來,猜測這只是一個錯字..
這將有助於:
DELETE
from t2
FROM t1
RIGHT JOIN t2
ON t1.id = t2.id
WHERE t2.id is NULL
我和@Elizabeth 有同樣的需求,我發現@Tobb 的方法有效……但是像糖蜜一樣慢,在我的桌子上執行大約需要一分鍾。 我發現以下 SQL 命令序列在一秒鍾內完成了相同的結果:
ALTER TABLE t2 ADD COLUMN [USED] YESNO;
UPDATE t2 SET [USED]=true WHERE id IN (SELECT id FROM t1);
DELETE FROM t2 WHERE [USED] <> true;
ALTER TABLE t2 DROP COLUMN [USED];
DELETE語句中沒有 *,因此將其更改為:
DELETE
FROM t2
WHERE id not in (SELECT id FROM t1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.