在 previous question 中我发现了如何拆分我的搜索字符串“01-0023”并搜索两列。现在我还想添加来自第三列 description
的结果。但是,我希望首先显示(组,文章)产生的数据(即排名更高/更相关)。这怎么可能?
原始查询: SELECT * FROM ARTICLES WHERE group= substring_index('@search_string', '-', 1) + 0 AND article= substring_index('@search_string', '- ', -1) + 0
新查询: SELECT * FROM ARTICLES WHERE (group= substring_index('@search_string', '-', 1) + 0 AND article= substring_index('@search_string', ' -', -1) + 0) 或描述 LIKE '%@search_string%'
最佳答案
SELECT *
FROM ARTICLES
WHERE (group= substring_index('@search_string', '-', 1) + 0
AND article= substring_index('@search_string', '-', -1) + 0)
OR description LIKE '%@search_string%'
ORDER BY CASE
WHEN (group= substring_index('@search_string', '-', 1) + 0
AND article= substring_index('@search_string', '-', -1) + 0) THEN 1
WHEN description LIKE '%@search_string%' THEN 2 END ASC
关于MySQL - 根据同一查询中的参数对结果进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32651461/