Можно ли заказать (DESC) результаты MYSQL-запрос в зависимости от количество матчей это в ГДЕ оговорка, который был отделен несколько операторов ИЛИ?
Я хотел бы сделать это для следующего запроса:
SELECT column_1, column_2, column_2
FROM tbl_table
WHERE column_1 LIKE '%$string1%'
OR column_2 LIKE '%$string2%'
OR column_3 LIKE '%$string3%'
ORDER BY ... "
Вы можете использовать SUM () и GROUP BY следующим образом:
ВЫБРАТЬ столбец_1, столбец_2, столбец_3, SUM (IF (column_1 LIKE '% $ string1%', 1, 0)) как S1, SUM (IF (column_2 LIKE '% $ string2%', 1, 0)) как S2, SUM (IF (column_3 LIKE '% $ string3%', 1, 0)) как S3 FROM tbl_table ГДЕ column_1 НРАВИТСЯ '% $ string1%' ИЛИ column_2 LIKE "% $ string2%" ИЛИ column_3 LIKE "% $ string3%" GROUP BY column_1, column_2, column_3 ЗАКАЗАТЬ S1 DESC, S2 DESC, S3 DESC
Это единственный способ, которым я знаю:
SELECT column_1, column_2, column_2
, IF(column_1 LIKE '%$string1%', 1, 0)
+ IF(column_2 LIKE '%$string2%', 1, 0)
+ IF(column_3 LIKE '%$string3%', 1, 0)
AS matchCount
FROM tbl_table
WHERE column_1 LIKE '%$string1%'
OR column_2 LIKE '%$string2%'
OR column_3 LIKE '%$string3%'
ORDER BY matchCount DESC