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

MySQL-根据同一查询中的参数对结果进行排序,mysql,sql,Mysql,Sql,在一篇文章中,我发现了如何拆分搜索字符串“01-0023”并搜索两列。现在,我还想添加第三列description的结果。但是,我希望(组、文章)中的结果首先显示(即排名更高/更相关)。这怎么可能 原始查询:从文章中选择*,其中group=substring\u index('@search\u string','-',1)+0和article=substring\u index('@search\u string','-',1)+0 新查询:从文章中选择*,其中(组=子字符串索引(“@sear

在一篇文章中,我发现了如何拆分搜索字符串“01-0023”并搜索两列。现在,我还想添加第三列
description
的结果。但是,我希望(组、文章)中的结果首先显示(即排名更高/更相关)。这怎么可能

原始查询:
从文章中选择*,其中group=substring\u index('@search\u string','-',1)+0和article=substring\u index('@search\u string','-',1)+0


新查询:
从文章中选择*,其中(组=子字符串索引(“@search\u string”,“-”,1)+0和文章=子字符串索引(“@search\u string”,“-”,-1)+0)或类似“%@search\u string%”的描述。
您可以按以下顺序将逻辑移动到

SELECT *
FROM ARTICLES
ORDER BY (`group` = substring_index('@search_string', '-', 1) + 0) DESC,
         (`article` = substring_index('@search_string', '-', -1) + 0) DESC

我想你误解我了。我希望首先显示基于组和文章的结果(1行),然后显示来自
说明的任何结果。如果我将
按案例排序选择案例
更改为
按案例排序
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