2015-02-24 64 views
0

我有兩個表,例如:SQL Delete與另一個表的關係

TableA帶有列GUID,ProgKey,UserKey,ProgName。

TableB帶有列GUID,AppKey,ModeName。外鍵:GUID-> TableA.GUID

我需要刪除具有特定值的TableB.AppKey,但只能使用TableA.UserKey =特定值的條件。

我想這樣簡單的東西,但它沒有工作:

Delete from TableB b, TableA a where b.AppKey=? and a.UserKey=? 

而且試過,也沒有工作:

Delete from TableB (AppKey) Select ? From TableB b, TableA a where a.UserKey=? 

= appkeyValue000

? = userkeyValue000

GUID是主鍵。

+0

請參閱http://stackoverflow.com/questions/652770/delete-with-join-in-mysql以獲得幾年前的回覆,其中有幾條評論與哪條最好有關。 – 2015-02-25 07:27:43

+0

@PeterBowers 謝謝!這已經讓我清楚了。將使用連接而不是「和(選擇...)」 – CodeGust 2015-02-26 04:09:58

回答

1

http://dev.mysql.com/doc/refman/5.0/en/delete.html

DELETE tableB FROM tableB JOIN tableA ON (tableB.GUID = tableA.GUID) 
WHERE tableA.UserKey = 'userkeyValue000' 
AND tableB.AppKey = 'appkeyValue000' 

缺失發生在之前存在的FROM關鍵字表(一個或多個)。

+0

謝謝!有用!但是,我不確定要使用哪個答案:這一個(似乎更輕)或Table-JOIN ...是否有區別? – CodeGust 2015-02-24 22:09:28

1

從表中刪除where id in(select id from table2 where y = 234)?

1

您可以使用JOIN進行刪除,這似乎是IMO最自然的方式。

DELETE TableB 
FROM TableB JOIN TableA ON TableA.GUID = TableB.GUID 
WHERE TableB.AppKey = <Value> AND TableA.UserKey = <OtherVal>; 
+0

謝謝!有用!雖然我不確定使用哪個答案... – CodeGust 2015-02-24 22:11:12