2013-04-12 55 views
3

我有两个表,分别是表X和表Y. 我想从表X中删除列值为x1的所有数据,并且还想从表Y中删除列值为x1的数据。从多表中删除数据

我如何使用单个Delete声明来实现此目的?

感谢

回答

2

既然你想从多个表中删除,你应该指定你想删除的表,所以你不会得到语法错误。

DELETE x, y 
FROM x INNER JOIN y ON x.Col = y.Col 
WHERE x.Col = 'x1' 

http://www.sqlfiddle.com/#!2/00ab7/1

+0

在x,y上获取语法错误 – Romi

1
delete x,y from x,y where x.colname='x1' and y.colname='x1' 

尝试此查询。

希望它有帮助。

+0

'删除x,y从x,y ....' –

+0

@JW是不是错误? – Freelancer

+0

您需要指定目标表,因为您要从多个表中删除。 –

0

两种方式:

  1. 使用多个DELETE语句。
  2. 对相关的InnoDb表使用外键的功能 - ON DELETE CASCADE从表中删除数据的操作。在这种情况下,从父表中删除数据就足够了,子表中的所有相关记录将被自动删除。