SELECT id
FROM table
WHERE fistname LIKE CONCAT('%',?,'%')
OR secondname LIKE CONCAT('%',?,'%')
OR middlename LIKE CONCAT('%',?,'%')");
$stmt->bind_param("sss", $first, $second, $middle);
我希望能够对返回的结果进行排序,以便它们按匹配总数的顺序显示。
例如:
id | firstname | secondname | middlename
------------------------------------------------
1 | Thomas | Smith | John
2 | Bob | Smith | John
对于 vars $first = "Thomas", $second = "Smith", $middle="John",结果将按顺序 1,2 排序
对于变量 $first = "Bob", $second = "Smith", $middle="Peter",结果将按顺序 2,1 排序
等...
谢谢!
最佳答案
ORDER BY
CASE WHEN firstname LIKE CONCAT('%',?,'%') THEN 1 ELSE 0 END +
CASE WHEN secondname LIKE CONCAT('%',?,'%') THEN 1 ELSE 0 END +
CASE WHEN middlename LIKE CONCAT('%',?,'%') THEN 1 ELSE 0 END DESC
关于php - 根据来自多列的 LIKE 匹配项数量对 SQL 结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57699074/