在sqlite语句中梳理DELETE和LIKE

gyp*_*Dev 6 sqlite

我试图将两者合并为一个单一的陈述,我甚至会满足于两个单独的陈述.....我知道它一定是可能的,但是如何?

这是我试过的:

DELETE FROM myTable WHERE myValue LIKE 'findme%';
Run Code Online (Sandbox Code Playgroud)

和:

DELETE FROM myTable WHERE EXISTS (SELECT * FROM myTable WHERE myValue LIKE 'findme%');
Run Code Online (Sandbox Code Playgroud)

我得到第二个语句的错误,例如,你只能用另一个语句的LIKE语句得到一个结果......

Mik*_*ll' 5

如果此语句返回任何行

select * from mytable where myvalue like 'findme%';
Run Code Online (Sandbox Code Playgroud)

然后将“选择*”替换为“删除”应将其删除。

delete from mytable where myvalue like 'findme%';
Run Code Online (Sandbox Code Playgroud)

只要您具有足够的权限,它就可以与任何SQL数据库一起使用。


Ben*_*oit 4

你的第一个声明应该有效。尝试不加最后的分号?

\n\n

第二个不符合逻辑。您的子查询与第​​一个子查询不相关,并且您无法扫描正在修改的表。实际上,我对这个查询的期望是,如果它会运行的话,如果有一行与您的列匹配\xe2\x80\xa6,则所有行都将被删除

\n\n

如果您想知道为什么带有 子句的解决方案IN有效,而不是EXISTS,这是因为EXISTS条件是针对每一行计算的,而IN集合只计算一次。

\n