Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询以选择与颜色变体不同的颜色_Sql_Sqlite_Select - Fatal编程技术网

SQL查询以选择与颜色变体不同的颜色

SQL查询以选择与颜色变体不同的颜色,sql,sqlite,select,Sql,Sqlite,Select,我已经寻找了一个更好的方法来做这件事,但还没有找到任何适合我具体情况的方法。这是在SQLite中 我有以下疑问: select color1, color2 from table where color1 = 'red' and color2 not like '%red%' and color2 not like '%scarlet%' and color2 not like '%cherry%' 换句话说,我试图选择与已知颜色变体不匹配的颜色。我必须像一样使用,因为这是自

我已经寻找了一个更好的方法来做这件事,但还没有找到任何适合我具体情况的方法。这是在SQLite中

我有以下疑问:

select color1, color2 
from table
where color1 = 'red'
  and color2 not like '%red%' 
  and color2 not like '%scarlet%' 
  and color2 not like '%cherry%'
换句话说,我试图选择与已知颜色变体不匹配的颜色。我必须像一样使用
,因为这是自由格式的文本

我的查询工作得很好,但随着我向其中添加更多变体,它变得很笨拙。我尝试将变量放在另一个表中并使用子查询,如下所示:

select color1, color2 
from table
where color1 = 'red'
  and color2 not like '%' || (select color_alias from color where color = 
'red') || '%'
但是,like语句只计算子查询返回的第一条记录


是否有人知道在查找表中包含颜色变量并仍使用
like
运算符的方法?

您可以使用
exists
运算符:

SELECT color1, color2
FROM   mytable
WHERE  color1 = 'red' AND
       NOT EXISTS (SELECT *
                   FROM   colors
                   WHERE  color = 'red' AND 
                          color LIKE '%' || color2 || '%')

如果你真的想解决这个问题,你应该有另一个表,每个表都有一个基本颜色和变量列。