在SQL中,如何将一个匹配列优先于另一个?

时间:2012-08-09 22:52:48

标签: sql match where operator-precedence

我尝试了一些事情,但我画了一个空白。这是我的疑问:

SELECT * 
    FROM Companies 
WHERE 
    Symbol LIKE 'ZY%' OR 
    Name LIKE '%ZY%' 
ORDER BY Symbol ASC
LIMIT 2;

基本上我想要“ZY”匹配(ZNGA,Zynga Inc)才能匹配(HALO,Halozyme Therapeuti ......)。

显然订单的原因是查询的这一部分:

ORDER BY Symbol

我错过了一些明显的东西吗?

2 个答案:

答案 0 :(得分:5)

您只需将其添加到Order By子句

即可
SELECT * FROM Companies WHERE Symbol LIKE 'ZY%' OR Name LIKE '%ZY%' 
ORDER BY 
  (CASE WHEN Symbol LIKE 'ZY%' THEN 1
        WHEN Name LIKE '%ZY%' THEN 2
        END),
Symbol ASC;

答案 1 :(得分:0)

不确定这是你在找什么,但是......

ORDER BY CASE WHEN Symbol LIKE 'ZY%' THEN Symbol ELSE Name END ASC