SQL嵌套CASE语句报错求助:多表关联UPDATE设置status_fl求修正
SQL错误修正方案
错误原因
- 缺少
CASE关键字:SQL的条件判断表达式必须以CASE开头、END结尾,原代码赋值部分没有声明开头的CASE - 嵌套判断语法缺失:第二层的
WHEN判断没有被CASE包裹,不符合嵌套CASE的语法规范
修正后的代码(嵌套CASE写法,完全匹配你描述的业务逻辑)
UPDATE emp SET status_fl= CASE WHEN mgmt.id IS NOT NULL THEN 'Y' WHEN mgmt.id IS NULL THEN CASE WHEN staff.No IS NOT NULL THEN 'Y' ELSE 'N' END END FROM EMPLOYEE emp LEFT OUTER JOIN Management mgmt on emp.id=mgmt.id LEFT OUTER JOIN Staff staff ON staff.No=emp.No
简化写法(逻辑等价,更易维护)
你的业务逻辑本质是只要mgmt.id非空或staff.No非空就返回Y,否则返回N,可以不用嵌套CASE,写法更简洁:
UPDATE emp SET status_fl= CASE WHEN mgmt.id IS NOT NULL OR staff.No IS NOT NULL THEN 'Y' ELSE 'N' END FROM EMPLOYEE emp LEFT OUTER JOIN Management mgmt on emp.id=mgmt.id LEFT OUTER JOIN Staff staff ON staff.No=emp.No
内容的提问来源于stack exchange,提问作者Preeti
相关产品推荐
相关产品推荐

