SQL-запрос для выбора цветов, не похожих на варианты цветов - PullRequest
0 голосов
/ 19 октября 2018

Я искал лучший способ сделать это, но не нашел ничего, что бы работало в моей конкретной ситуации.Это в 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?

1 Ответ

0 голосов
/ 19 октября 2018

Вы можете использовать оператор exists:

SELECT color1, color2
FROM   mytable
WHERE  color1 = 'red' AND
       NOT EXISTS (SELECT *
                   FROM   colors
                   WHERE  color = 'red' AND 
                          color LIKE '%' || color2 || '%')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...