有一个表'集',其中包含以下列: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子句中的任何一个条件适用?
答案 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
列,可存储1
或0
值。
如果是这种情况,则只需使用{<1}}而不是like
。
delete from collection
where cname not like '/mnt/sdcard%' OR isviewed != 1;
这样,它比使用LIKE
更具性能。