2014-10-29 110 views
1

我想一次刪除兩個表中的數據。從兩個表中刪除

表1:

create table del1 
(
cola varchar(10) primary key, 
colb varchar(10) 
); 

表2:

create table del2 
(
cola varchar(10) foreign key references del1(cola) on delete cascade, 
colb varchar(10) 
) 

插入一些數據:

insert into del1 values('a','b'); 
insert into del2 values('a','d'); 

查詢以刪除的記錄:

delete from del1 as d1 
inner join del2 as d2 
on d1.cola= d2.cola 
where d1.cola= 'a' 

錯誤

Incorrect syntax near the keyword 'as'. 
+0

我猜'on'條件是爲了參考'd2'有。 「where」子句中的實際刪除條件是否基於'cola'(「colb」無關緊要,因此它也可以輕鬆地引用'd2'而不是'd1')? – 2014-10-29 07:40:41

+0

[爲什麼我不能在DELETE語句中使用別名?](http://stackoverflow.com/questions/11005209/why-cant-i-use-an-alias-in-a-delete-statement) – bummi 2014-10-29 07:42:19

回答

3

其實你不需要加入這兩個表。 deleteDEL1表它會自動刪除DEL2表因爲u有on delete cascade

這是你所需要的。

delete from del1 where cola='a' 

本聲明將DEL1刪除其中可樂=「A」,也是DEL2表,其中可樂=「A」

2

加入是不必要的。由於On Cascade delete它會刪除這兩個記錄

​​
+0

@bummi感謝更新 – 2014-10-29 08:07:23