使用 CASE 语句别名上的 WHERE 子句 实现条件筛选
在数据库查询中,我们经常会使用 CASE 语句来根据不同条件生成别名。除了生成别名,CASE 语句还可以与 WHERE 子句结合使用,实现更精确的条件筛选。下面我们通过一个示例来演示如何使用 CASE 语句别名上的 WHERE 子句。假设我们有一个名为 "employees" 的表,其中包含员工的姓名、年龄和工资信息。我们想要查询出工资在不同范围的员工,并对不同范围的工资进行分类。我们可以使用 CASE 语句生成一个别名,然后与 WHERE 子句结合使用。首先,我们创建一个示例表 "employees",并插入一些数据:sqlCREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(100), age INT, salary INT);INSERT INTO employees (id, name, age, salary)VALUES (1, '张三', 25, 3000), (2, '李四', 30, 5000), (3, '王五', 35, 8000), (4, '赵六', 40, 10000), (5, '钱七', 45, 12000);现在,我们开始编写查询语句。首先,我们使用 CASE 语句生成一个别名 "salary_range",根据不同的工资范围进行分类。然后,我们在 WHERE 子句中使用该别名进行筛选。
sqlSELECT name, age, salary, CASE WHEN salary < 5000 THEN '低工资'</p> WHEN salary >= 5000 AND salary < 10000 THEN '中等工资'</p> ELSE '高工资' END AS salary_rangeFROM employeesWHERE salary_range = '中等工资';以上代码中,我们使用 CASE 语句根据工资范围将员工分类为 "低工资"、"中等工资" 和 "高工资"。然后,我们在 WHERE 子句中筛选出 "中等工资" 的员工。案例代码:
sqlCREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(100), age INT, salary INT);INSERT INTO employees (id, name, age, salary)VALUES (1, '张三', 25, 3000), (2, '李四', 30, 5000), (3, '王五', 35, 8000), (4, '赵六', 40, 10000), (5, '钱七', 45, 12000);SELECT name, age, salary, CASE WHEN salary < 5000 THEN '低工资'</p> WHEN salary >= 5000 AND salary < 10000 THEN '中等工资'</p> ELSE '高工资' END AS salary_rangeFROM employeesWHERE salary_range = '中等工资';以上案例中,我们创建了一个名为 "employees" 的表,包含了员工的姓名、年龄和工资信息。然后,我们使用 CASE 语句生成了一个别名 "salary_range",根据不同的工资范围对员工进行分类。最后,我们使用 WHERE 子句筛选出了工资在中等范围的员工。通过 CASE 语句别名上的 WHERE 子句,我们可以轻松实现对数据的条件筛选。这种方法不仅简单易懂,还能提高查询语句的可读性和灵活性。无论是对员工工资的分类,还是其他需要条件筛选的情况,都可以通过这种方式来实现。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号