【发布时间】:2011-06-25 10:13:16
【问题描述】:
我需要从 SQLite 表中删除行 ID 不存在于另一个表中的行。 SELECT 语句返回正确的行:
SELECT * FROM cache LEFT JOIN main ON cache.id=main.id WHERE main.id IS NULL;
但是,delete 语句会从 SQLIte 生成错误:
DELETE FROM cache LEFT JOIN main ON cache.id=main.id WHERE main.id IS NULL;
错误是:SQLite 错误 1 - 在“左”附近:语法错误。我可以使用其他语法吗?
【问题讨论】:
-
解释一下:我正在使用附加的 where 条件从“主”表中删除行,以保留用户标记为“锁定”的任何行(即,在解锁之前不应删除):DELETE FROM 主 WHERE id = ? AND 锁定 = 0;每次成功删除后都必须从“缓存”表中删除匹配行,但 SQlite 不会返回一个值,让我知道第一个删除语句是否实际匹配任何行。因此,我尝试从缓存表中删除“不匹配”的行,并在左连接上遇到问题。
标签: sqlite left-join sql-delete