我正在寻找一种更好的方法来执行此操作,但没有找到适合我的具体情况的任何方法。这是在SQLite中。
我有以下查询:
select color1, color2
from table
where color1 = 'red'
and color2 not like '%red%'
and color2 not like '%scarlet%'
and color2 not like '%cherry%'
换句话说,我正在尝试选择与已知颜色不匹配的颜色。我必须使用like
,因为这是自由格式的文本。
我的查询工作正常,但随着我向其添加更多变体而变得笨拙。我尝试将变体放在另一个表中并使用子查询,如下所示:
select color1, color2
from table
where color1 = 'red'
and color2 not like '%' || (select color_alias from color where color =
'red') || '%'
但是,like语句仅计算子查询返回的第一条记录。
有人知道在查询表中包含颜色变体并仍然使用like
运算符的方法吗?
答案 0 :(得分:1)
您可以使用exists
运算符:
SELECT color1, color2
FROM mytable
WHERE color1 = 'red' AND
NOT EXISTS (SELECT *
FROM colors
WHERE color = 'red' AND
color LIKE '%' || color2 || '%')