检查表中记录是否存在于另一表及SQL CASE语句报错排查
排查SQL语法错误并解决需求问题
嘿,我来帮你搞定这个SQL的问题~
首先,咱们先拆解你这条报错语句的问题:
- 核心语法错误:
CASE表达式是放在SELECT子句里用来生成计算列的,不能直接跟在FROM关键字后面,这就是系统报"Incorrect syntax near the keyword 'case'"的根本原因。 - 关联逻辑缺失:你直接用逗号分隔
OUTPUT和TEST表,却没指定关联条件,就算语法没问题,也会产生无意义的笛卡尔积,完全达不到你的需求。
结合你已经给OUTPUT表新增TEST列的情况,我给你两种可行的解决方案:
方案1:直接更新OUTPUT表的TEST列
用EXISTS子查询判断当前OUTPUT的ID是否存在于TEST表中,批量更新对应值:
UPDATE OUTPUT SET TEST = CASE WHEN EXISTS (SELECT 1 FROM TEST WHERE TEST.ID = OUTPUT.ID) THEN 'Yes' ELSE 'No' END
方案2:直接查询生成目标结果集(无需提前加列)
如果只是想得到目标格式的查询结果,不需要修改原表结构,可以用LEFT JOIN关联两张表,再通过CASE判断:
SELECT O.ID, O.Name, CASE WHEN T.ID IS NOT NULL THEN 'Yes' ELSE 'No' END AS TEST FROM OUTPUT O LEFT JOIN TEST T ON O.ID = T.ID
两种方法都能帮你得到想要的结果,选哪种取决于你是要修改现有表数据,还是只需要临时查询出结果哦~
内容的提问来源于stack exchange,提问作者Syafiq Firdaus
相关产品推荐
相关产品推荐

