在SQL中使用OR删除

时间:2016-01-19 19:34:54

标签: android sql sqlite android-sqlite

有一个表'集',其中包含以下列:id,cid,cname,cdescription,isviewed。

我基于WHERE子句使用以下查询进行删除。

delete from collection
where cname not like '/mnt/sdcard%';

当我尝试使用OR向上述查询添加一个条件时,条件不适用,并且在不应用WHERE子句的情况下删除行

delete from collection
where cname not like '/mnt/sdcard%' OR isviewed not like '1';

这是否是在删除时使用OR条件的正确语法?如果是,那么需要做什么才能使WHERE子句中的任何一个条件适用?

2 个答案:

答案 0 :(得分:0)

delete from collection
where 
cname not like '/mnt/sdcard%' OR 
isviewed not like '1%';

这必须与您喜欢的子查询中的匹配部分有关。通过指定:

  

'1%'

你正在筛选从1开始的所有isviewed值,假设这是你所追求的。

考虑

  

'%1%'

如果你正在寻找角色'1'的存在 或

  

'%1'   如果你正在寻找以'1'结尾的字符串    或

答案 1 :(得分:0)

虽然@Spade解决方案有效,因为LIKE无论列的数据类型如何都可以使用,但我认为isviewed列应该按照'类似&#过滤39 ;.对我来说,它听起来像INT列,可存储10值。

如果是这种情况,则只需使用{<1}}而不是like

delete from collection
where cname not like '/mnt/sdcard%' OR isviewed != 1;

这样,它比使用LIKE更具性能。