admin

根据首先满足条件的行对sql查询中的行进行排序

sql

我想知道是否在sql server中根据首先满足条件的行对行进行排序,例如,如果我正在编写这样的查询

SELECT * FROM IMAGES 
WHERE NAME LIKE '%TEST%'
AND DESCRIPTION LIKE '%TEST%'

我希望与名称匹配的行出现在与描述匹配的行之前,通常sql
server将按其ID排列它们,所以…无论如何要这样做?(注意:我不想使用并集语句,因为那样会耗尽数据库的资源)。


阅读 137

收藏
2021-06-07

共1个答案

admin

首先,UNION不一定会耗尽数据库;按照书面说明,就性能而言,这可能根本没有任何区别,具体取决于查询优化器决定如何处理它。

其次,由于您的where子句包含“ AND”,因此所有结果在描述和名称上都将匹配,因此我认为这不是您想要的。

第三,假设您要在查询中使用“ OR”,则可以尝试如下操作:

select
    *
from
    images i
where 
    i.name like '%TEST%'
    or i.description like '%TEST%'
order by
    case
        when i.name like '%TEST%' then 0
        else 1
    end asc;
2021-06-07