MySQL - 根据同一查询中的参数对结果进行排名

标签 mysql sql

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/

相关文章:

mysql - Kubernetes Docker/MySQL 一项服务中的多个数据库

mysql - 如何将 docker 容器与主机的 localhost mysql 数据库连接?

mysql - TOP 和 ORDER BY sql 错误

mysql - 如何显示条件来自另一张表的一张表中的记录?

mysql - AI ID 字段上的 WHERE 子句出现意外结果

c# - 使用 NOT EXIST 查询超时

MySql 查询检索 2 个用户之间的对话

mySQL你怎么做一个chain of join?

sql - Azure SqlExceptions

php - 在 codeigniter 选择查询中获取空数组