Как преобразовать предложение WHERE IN с несколькими значениями в RegExp или Like

0

Я хочу преобразовать это:

SELECT id,songTitle,artistName, trackId
FROM songs
WHERE (songTitle, artistName) IN (('come together', 'the beatles'),('all the small things', 'blink-182'))

Что-то вроде этого, но я не знаю правильного синтаксиса:

SELECT id,songTitle,artistName, trackId
FROM songs
WHERE (songTitle, artistName) IN LIKE (('%come together%', '%the beatles%'),('%all the small things%', '%blink-182%'))

За исключением того, что я ищу 100 песен из нескольких песен одновременно. Мы могли бы использовать REGEXP тоже, я просто не знаю правильного синтаксиса для любого из них.

Теги:
sql-like
where-in

1 ответ

1
Лучший ответ
  • WHERE (a,b) IN ((1,2),...) очень слабо оптимизировано.
  • Ведущие дикие карты в LIKE предотвращают использование индекса.
  • Вы не можете выполнить созданную вами конструкцию.

Таким образом, производительность в стороне, давайте посмотрим, как выполнить задачу:

WHERE ( songTitle LIKE '%come together%' AND artistName LIKE '%the beatles%')
   OR ( .... )
   OR ...

Извините, нет коротких путей.

REGEXP не может помочь в этом случае.

FULLTEXT - это то, что нужно учитывать, но я не вижу, чтобы это помогло в этом примере.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню