CASE 语句别名上的 WHERE 子句

sqlserver

1个回答

写回答

ivyniu123

2025-07-09 14:35

+ 关注

使用 CASE 语句别名上的 WHERE 子句 实现条件筛选

在数据库查询中,我们经常会使用 CASE 语句来根据不同条件生成别名。除了生成别名,CASE 语句还可以与 WHERE 子句结合使用,实现更精确的条件筛选。下面我们通过一个示例来演示如何使用 CASE 语句别名上的 WHERE 子句。

假设我们有一个名为 "employees" 的表,其中包含员工的姓名、年龄和工资信息。我们想要查询出工资在不同范围的员工,并对不同范围的工资进行分类。我们可以使用 CASE 语句生成一个别名,然后与 WHERE 子句结合使用。

首先,我们创建一个示例表 "employees",并插入一些数据:

sql

CREATE 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 子句中使用该别名进行筛选。

sql

SELECT name, age, salary,

CASE

WHEN salary < 5000 THEN '低工资'</p> WHEN salary >= 5000 AND salary < 10000 THEN '中等工资'</p> ELSE '高工资'

END AS salary_range

FROM employees

WHERE salary_range = '中等工资';

以上代码中,我们使用 CASE 语句根据工资范围将员工分类为 "低工资"、"中等工资" 和 "高工资"。然后,我们在 WHERE 子句中筛选出 "中等工资" 的员工。

案例代码:

sql

CREATE 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_range

FROM employees

WHERE salary_range = '中等工资';

以上案例中,我们创建了一个名为 "employees" 的表,包含了员工的姓名、年龄和工资信息。然后,我们使用 CASE 语句生成了一个别名 "salary_range",根据不同的工资范围对员工进行分类。最后,我们使用 WHERE 子句筛选出了工资在中等范围的员工。

通过 CASE 语句别名上的 WHERE 子句,我们可以轻松实现对数据的条件筛选。这种方法不仅简单易懂,还能提高查询语句的可读性和灵活性。无论是对员工工资的分类,还是其他需要条件筛选的情况,都可以通过这种方式来实现。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号