MySQL: выберите записи, которые содержат только элементы из списка и их комбинации - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть таблица, которая содержит отдельные слова (например, A, B и C) и составные слова (например, AB, AC и AD).Я хочу выбрать все записи, которые содержат только слова из предопределенного списка слов.

Пример

id   word
--   -----
1    A
2    B
3    C
4    D
5    AB
6    AC
7    AD

Учитывая список ('A', 'B'), я хочу выбратьслова A, B и AB.То есть я хочу отфильтровать все, что содержит что-то кроме A или B.

Когда я использую SELECT * from table WHERE word in ('A','B'), я получаю только A и B, без соединения AB.

КогдаЯ использую SELECT * from table WHERE word like '%A%' or word like '%B%', я получаю A, B, AB, AC и AD.

По сути, я мог бы сделать следующее:

  • Шаг 1: SELECT word from table WHERE word not like '%A%' and word not like '%B%', который возвращаетC и D.
  • Шаг 2: SELECT * from table WHERE word not like '%C%' and word not like '%D%', который возвращает A, B и AB.

Однако я не знаю, как объединить два запроса.Я читал о подзапросах, но они не работают с оператором like.

Спасибо за помощь!

1 Ответ

0 голосов
/ 10 февраля 2019

Вы, кажется, хотите регулярное выражение.Я думаю:

where word regexp '^[AB]+'

Это предполагает, что «слово» действительно означает «буква».Вы можете изменить это для фактических слов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...