使用内连接 SQLITE 从两个表中删除行

Posted

技术标签:

【中文标题】使用内连接 SQLITE 从两个表中删除行【英文标题】:Deleting rows from two tables using inner join SQLITE 【发布时间】:2013-01-25 23:22:23 【问题描述】:

如何从两个单独的表中删除一行?我认为可以使用内部连接来做到这一点

DELETE a.*, b.* FROM Holiday INNER JOIN Accommodation b on a.LocationID = b.LocationID

在这里,我尝试通过将第一个表中的主键位置与第二个表中的位置 id 匹配来删除。我得到一个 SQL 异常“sqlException near a”

我在 SQLITE、java 中这样做

【问题讨论】:

不确定多表删除的确切语法,但不管您是否忘记了假日表的相关名称。 FROM Holiday INNER JOIN 应该是 FROM Holiday a INNER JOIN sqlite中没有多表删除。 哦,我该如何克服这个问题 【参考方案1】:

在 SQLite 中,一个DELETE 命令只从一个表中删除。

您的查询,如所写,实际上并没有限制要删除的记录,所以如果您真的想删除所有记录,您可以使用:

DELETE FROM Holiday;
DELETE FROM Accommodation;

如果要删除主表中的一条记录和子表中的所有对应记录,只需按该键值过滤即可:

DELETE FROM Holiday       WHERE LocationID = 1;
DELETE FROM Accommodation WHERE LocationID = 1;

【讨论】:

如果您希望程序中的用户在不指定的情况下选择该键值怎么办 然后让用户选择值,然后将该值放入查询中。

以上是关于使用内连接 SQLITE 从两个表中删除行的主要内容,如果未能解决你的问题,请参考以下文章

使用内连接删除一行

内连接外连接的区别?

SQL从具有内连接和限制的两个表中选择[重复]

SQL从具有内连接和限制的两个表中选择[重复]

SQL从具有内连接和限制的两个表中选择[重复]

内连接与外连接