Mysql:根据WHERE子句中匹配的次数对结果排序


Mysql: Order results accrording to the number of matches in a WHERE clause?

是否可以根据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