我需要删除SQLite表中其行表不存在于另一个表中的行的SQLite表中的行。 SELECT语句返回正确的行:当另一个表中不存在匹配时从SQLite表中删除行
SELECT * FROM cache LEFT JOIN main ON cache.id=main.id WHERE main.id IS NULL;
然而,delete语句从源码产生一个错误:
DELETE FROM cache LEFT JOIN main ON cache.id=main.id WHERE main.id IS NULL;
的错误是:SQLite的错误1 - 近 “左”:语法错误。是否有另一种语法可以使用?
要解释一下:我正在删除“主”表中的行使用额外的where条件,以保留用户已标记为“已锁定”的任何行(即不应删除,直到解锁): DELETE FROM main WHERE id =? AND locked = 0; 每次成功删除后都必须从“缓存”表中删除匹配的行,但SQlite不会返回一个值,该值可以让我知道第一条删除语句是否实际上与任何行匹配。因此,我试图从缓存表中删除“不匹配”的行,并在左连接上挂钩。 – 2011-02-11 08:59:01