在我的存储过程中,我试图根据参数获取查询结果。我有一个主表“employee”和表“employee_process”,我把它与第一个表连接起来。 在结果中,如果参数的值为0,我希望从“employee”获取除了与“employee_process”连接的行之外的所有内容,如果值为1,我只想获取两个表之间连接的行。这就是我现在所拥有的:
WHERE ( @state ^ ep.employee_id IS NOT NULL )
如何实现我尝试使用类似的东西:
{{1}}
但没有运气。
提前谢谢
答案 0 :(得分:4)
按如下方式重新定义CASE
表达式:
SELECT *
FROM employee e
LEFT JOIN employee_process ep
ON ep.employee_id = e.employee_id
WHERE
@state = 0 OR ep.employee_id IS NOT NULL;
CASE
表达式必须生成实际值,而不是其他表达式。但是,我们甚至不需要使用CASE
表达式。
修改强>
根据您的评论,似乎我们应该为WHERE
子句添加另一个标准:
WHERE
(@state = 0 AND ep.status <> 'employee_process') OR ep.employee_id IS NOT NULL;