[英]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中,比較結果為0
和1
。 所以你可以做
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.