在 select 查询中按大小写排序
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
我希望具有 qualified = 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
你也可以这样做
select case when qualified = 'BE' Then 1
当status = 'Yes' then 2 else 3 End as Ranking,
* 来自用户排序
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
在 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
你也可以这样做
select case when qualified = 'BE' Then 1 当status = 'Yes' then 2 else 3 End as Ranking, * 来自用户排序