如何从另一个表中删除与主要表连接的所有行?

时间:2016-04-06 06:36:33

标签: sql

我尝试过类似的东西,但它到目前为止只删除了类别。

DELETE s, i 
FROM imgbox_categories s 
INNER JOIN imgbox_images i 
ON s.category_id = i.fk_category_id 
WHERE category_id = @id

另外我收到错误

Incorrect syntax near ','.

3 个答案:

答案 0 :(得分:1)

由于您没有标记任何涉及的DBMS,因此您可以EXISTS()使用ANSI SQL

DELETE from imgbox_categories 
WHERE EXISTS(SELECT 1 FROM imgbox_images  i
             WHERE imgbox_categories.category_id = i.fk_category_id )
 AND imgbox_categories.category_id = @id

答案 1 :(得分:0)

您的查询似乎是正确的,请查看this answer

你试图同时从两个表中删除,我想你不能这样做。以下是您收到错误的逗号:DELETE s, i

如果您使用查询从imgbox_categories删除,然后使用简单查询从imgbox_images删除,则应该有效。

答案 2 :(得分:0)

如果要从2个表中删除,可以使用2个SQL查询:

DELETE FROM imgbox_categories WHERE category_id = @id;
DELETE FROM imgbox_images WHERE fk_category_id = @id;