簡體   English   中英

在選擇查詢中按個案排序

[英]Order by and case in select query

users
id | status | qualified
1  | yes    | BE
2  | no     | BCOM
3  | no     | BSC
4  | no     | BE
5  | yes    | BE

我希望具有合格= BE的用戶先獲取,然后以狀態yes取,然后再獲取其他用戶

我寫了如下查詢,但沒有得到預期的結果

SELECT * 
FROM users 
ORDER BY 
CASE WHEN qualified =  'BE'
THEN 0
 WHEN status =  'yes'
THEN 0  
ELSE 1 
END

在MySQL中,比較結果為01 所以你可以做

SELECT * 
FROM users 
ORDER BY qualified <> 'BE',
         status <>  'yes'

通常你可以做

SELECT * 
FROM users 
ORDER BY case when qualified = 'BE' then 1 else 2 end,
         case when status = 'yes' then 1 else 2 end

您也可以做類似的事情

當合格='BE'時選擇大小寫,然后1當狀態='是'時再選擇2,否則3以排名結束,*來自用戶,按排名排序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM