簡體   English   中英

如何從第二個表中刪除“孤立”記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM