HIII
我有兩個表刪除其它表查找後 - SQL
Invited
- UID [PK]
Active
- UID [pk]
我想從Invited
誰是目前在Active
表中刪除UID
我能做到這與加入或唯一的方法是使用NOT IN or IN
?
HIII
我有兩個表刪除其它表查找後 - SQL
Invited
Active
我想從Invited
誰是目前在Active
表中刪除UID
我能做到這與加入或唯一的方法是使用NOT IN or IN
?
是的,你可以使用IN
。
Delete From Invited where UID in (Select UID From Active)
或者你可以使用一個加入,如果你想
Delete i
From Invited as i
Join Active as a on i.UID = a.UID
plz看我的編輯! – Sourav 2011-05-18 15:09:56
@Sourav:什麼編輯? – codingbadger 2011-05-18 15:12:06
DELETE FROM `Invited` WHERE Invited.UID IN (SELECT UID FROM `Active`)
,或者對於性能改進:
DELETE i FROM `Invited` AS i WHERE EXISTS (SELECT 1 FROM `Active` WHERE Active.UID = i.UID)
我給你的建議是重新考慮你的架構。對於數據庫中的單個記錄,UID應該是唯一的,但是您有兩個表都具有與其主鍵相同的UID。通過這樣做你打敗了UID的目的。 – 2011-05-18 15:10:27
@maple_shaft:每種情況下的UID實際上都可能是一個外鍵,它恰好也是主鍵。 – 2011-05-18 17:37:15
是的,這仍然是錯誤的。人們使用UID的原因是唯一標識一個記錄,而不僅僅是模式,而是所有數據庫。這與僅在一個表格中唯一的ID不同。 (TableCar ID - 23 Name - Mercedes,TableDriver ID - 23 Name - Joe)這兩個表在ID上都是唯一的,兩者的值都是23,但它們代表不同的記錄。在具有相同模式的不同數據庫中的23的進一步ID仍將表示不同的記錄,即使在相同的表中。 – 2011-05-18 18:02:14