Задача с выборкой из мускла, есть в бд таблица, в которой один из столбцов имеет значения вроде таких как на скрине
, мне нужно сделать выборку по нескольким номерам.
Варианты вроде:
SELECT * FROM `table` WHERE cat LIKE '%10%' or cat LIKE '%25%' or cat LIKE '%27%';
SELECT * FROM `table` WHERE FIND_IN_SET('10', cat) or FIND_IN_SET('25', cat) or FIND_IN_SET('27', cat);
работают не совсем правильно потому как при выборке результаты не сортируются по количеству совпадений от большего к меньшему.
Первый вариант так вообще фигня, особенно если ему задать %1%, то искать он мне будет и 1 и 16 и 21 айди, что не нужно.
Есть варианты какой нужно делать запрос для вывода результатов с сортировкой по количеству совпадений от большего к меньшему? То есть при выводе результатов сначала идут строки где совпадают три числа, потом два, следом соответственно одно число. Наиболее релевантные. У меня в примере используется три числа в запросе, но их может быть от 1 до 10 к примеру.