首页 > 解决方案 > 如果不是从 UI 中选择的员工,则获取所有员工,否则选择特定的员工数据

问题描述

如果没有选择任何员工,我想选择所有员工,否则需要所选员工的数据。

我已经写了这个查询,但是它抛出了错误。

DECLARE @emp_id INT

SET @emp_id=0 -- This will change based on the selected employee from UI

SELECT * FROM employees
WHERE employee_id in (CASE WHEN @emp_id=0 THEN (SELECT employee_id FROM employees) ELSE @emp_id END)

重现问题的示例脚本

CREATE TABLE employees (
    employee_id INT ,
    first_name VARCHAR (20) DEFAULT NULL,
    last_name VARCHAR (25) NOT NULL
);

INSERT INTO employees values (1, '1_fname', '1_lname'),(2, '2_fname', '2_lname'),(3, '3_fname', '3_lname'),(4, '4_fname', '4_lname'),(5, '5_fname', '5_lname')

我想在单个查询中做到这一点。

标签: mysql

解决方案


假设您使用的是准备好的语句,您将需要提供所选员工 2 次 - 作为参数 1 和 2:

SELECT * FROM employees
WHERE CASE WHEN COALESCE(?,0) = 0 THEN TRUE ELSE id = ? END

推荐阅读