选择查询中的排序依据和大小写

时间:2016-01-09 09:26:42

标签: sql mysqli sql-order-by

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

我希望使用qualified = BE的用户首先获取,然后使用状态yes然后获取其他用户

我写了如下查询,但没有按预期得到结果

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

2 个答案:

答案 0 :(得分:2)

在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

答案 1 :(得分:0)

您也可以执行类似

的操作

在qual ='BE'时选择case然后1 当status ='Yes'然后2 else 3 End as Ranking, *来自用户排名