题解 | 请按城市对客户进行排序,如果城市为空,则按国家排序
请按城市对客户进行排序,如果城市为空,则按国家排序
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 |
查看27道真题和解析