CASE WHEN
是 SQL 中的一个条件表达式,用于根据不同的条件返回不同的值。在某些数据库系统中,如 PostgreSQL,CASE WHEN
可以用来创建列表或数组。以下是如何使用 CASE WHEN
创建列表的基础概念和相关示例。
CASE WHEN
语句允许你根据一个或多个条件来选择不同的值。其基本语法如下:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
在 PostgreSQL 中,你可以使用 array_agg
函数结合 CASE WHEN
来创建一个数组(列表)。
假设我们有一个名为 employees
的表,其中包含员工的姓名和他们的部门。我们想要创建一个列表,其中包含所有属于特定部门的员工姓名。
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(50)
);
INSERT INTO employees (name, department) VALUES
('Alice', 'HR'),
('Bob', 'Engineering'),
('Charlie', 'HR'),
('David', 'Marketing');
现在,我们想要获取 HR 部门的所有员工姓名作为一个列表。
SELECT array_agg(name) AS hr_employees
FROM employees
WHERE department = 'HR';
这将返回一个包含 HR 部门所有员工姓名的数组。
如果你想要更复杂地使用 CASE WHEN
来创建列表,例如,根据多个条件来选择员工姓名,你可以这样做:
SELECT array_agg(
CASE
WHEN department = 'HR' THEN name
WHEN department = 'Engineering' THEN name
ELSE NULL
END
) AS selected_employees
FROM employees;
在这个例子中,我们创建了一个包含 HR 和 Engineering 部门员工姓名的列表。
CASE WHEN
时要注意性能问题,特别是在大型数据集上。CASE WHEN
的逻辑清晰且易于维护。通过上述方法,你可以有效地使用 CASE WHEN
来创建和处理列表数据。
领取专属 10元无门槛券
手把手带您无忧上云