题解 | 请按城市对客户进行排序,如果城市为空,则按国家排序
请按城市对客户进行排序,如果城市为空,则按国家排序
https://www.nowcoder.com/practice/c1b1d5bd008b4797ab2ef53a3afc4aba
select * from customers_info order by case when city is null then country else city end
使用示例
假设有 students
表:
1 | 张三 | 85 |
2 | 李四 | 59 |
3 | 王五 | 92 |
示例 1:用 CASE WHEN
分类成绩等级(搜索型)
sql
SELECT name, score, CASE WHEN score >= 90 THEN '优秀' WHEN score >= 60 THEN '及格' ELSE '不及格' -- 其他情况(<60) END AS grade_level FROM students;
结果:
张三 | 85 | 及格 |
李四 | 59 | 不及格 |
王五 | 92 | 优秀 |
示例 2:用简单 CASE 表达式匹配固定值
sql
SELECT name, CASE name WHEN '张三' THEN '一班' WHEN '李四' THEN '二班' ELSE '其他班级' END AS class FROM students;
结果:
张三 | 一班 |
李四 | 二班 |
王五 | 其他班级 |
示例 3:在 UPDATE
中更新数据(按条件赋值)
sql
-- 根据成绩更新“是否达标”字段 UPDATE students SET is_qualified = CASE WHEN score >= 60 THEN 1 -- 1表示达标 ELSE 0 -- 0表示不达标 END;
示例 4:在 WHERE
中筛选条件
sql
-- 筛选“优秀”或“不及格”的学生 SELECT name, score FROM students WHERE CASE WHEN score >= 90 THEN 1 WHEN score < 60 THEN 1 ELSE 0 END = 1;
结果:
李四 | 59 |
王五 | 92 |