Mar*_*ski 23 sqlite left-join sql-delete
我需要删除SQLite表中的行,其中行ID在另一个表中不存在.SELECT语句返回正确的行:
SELECT * FROM cache LEFT JOIN main ON cache.id=main.id WHERE main.id IS NULL;
Run Code Online (Sandbox Code Playgroud)
但是,delete语句会从SQLIte生成错误:
DELETE FROM cache LEFT JOIN main ON cache.id=main.id WHERE main.id IS NULL;
Run Code Online (Sandbox Code Playgroud)
错误是:SQLite错误1 - 接近"左":语法错误.我可以使用另一种语法吗?
wim*_*vds 45
SQLite显然不支持与delete语句的连接,正如您在Syntax图表中看到的那样.但是,您应该能够使用子查询来删除它们.
即.
DELETE FROM cache WHERE id IN
(SELECT cache.id FROM cache LEFT JOIN main ON cache.id=main.id WHERE main.id IS NULL);
Run Code Online (Sandbox Code Playgroud)
(未测试)
Igo*_*aka 13
既然你沿着子查询的路线走下去,也可以完全摆脱连接并简化查询:
DELETE FROM cache WHERE id NOT IN (SELECT id from main);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18660 次 |
| 最近记录: |