如何在SQL Server中使用join连接从两个表中删除行?

时间:2013-01-16 14:53:45

标签: sql sql-server join

Table1.

id | name
 1 | Test

Table2.

id | post | table1_id
 1 | mypst| 1

我需要从Table1中删除id=1行和Table2中所有行的行,其中table1_id =(1是来自Table1的id)。

我正在尝试这个:

DELETE FROM Table1 
INNER JOIN Table2 ON Table2.table1_id = Table1.id AND Table1.id = 1

但是我收到了错误:

  

关键字“INNER”附近的语法不正确。

怎么了?

2 个答案:

答案 0 :(得分:2)

您不应该在一个查询中从多个表中删除

DELETE FROM Table2 WHERE table1_id = 1;
DELETE FROM Table1 WHERE id = 1

应该没问题。你有什么特别的理由希望使用JOIN吗?

答案 1 :(得分:2)

让我们假设您正在做正确的事情并创建了一个外键(Table2.table1_id = Table1.id)。然后,您只需在Table1上设置ON DELETE CASCADE

在这种情况下,您应该做的一切是:

DELETE FROM Table1 WHERE id = 1

......放松一下。这是数据一致性,老兄:)