是否可以根据WHERE子句中匹配的数量来排序(DESC) MYSQL查询的结果,已被多个OR操作符分隔?
我想对以下查询执行此操作:
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:
<>之前SELECT column_1, column_2, column_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从tbl_tableWHERE column_1 LIKE '%$string1%'OR column_2 LIKE '%$string2%'OR 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