mysql - 如果不是从 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')
我想在单个查询中做到这一点。
解决方案
假设您使用的是准备好的语句,您将需要提供所选员工 2 次 - 作为参数 1 和 2:
SELECT * FROM employees
WHERE CASE WHEN COALESCE(?,0) = 0 THEN TRUE ELSE id = ? END
推荐阅读
- flutter - Flutter HomePage 太多的小部件有时会构建并创建 http 错误
- c# - 在 Linux 上运行 .net 核心自包含可执行文件的 glibc 错误
- php - 我正在尝试跳过“Google Drive 无法扫描此文件中的病毒”并直接生成下载链接
- excel - 使用 2 个变量嵌入循环
- python - 我错过了什么?API Python 问题
- firebase - Firebase messages.getToken() 失败并出现 MISSING_INSTANCEID_SERVICE 错误
- python - 如何使用python在已经找到的另一个单元格旁边的excel单元格中查找值?
- javascript - 检测数字输入的箭头已被点击 React
- c# - ASP.NET MVC 表单提交不起作用:没有错误
- r - R 中的 Web Scraping (rvest, RSelenium):如何在需要 SSL 证书的网站中进行身份验证