通过比较两个表来更新 SQL 查询
Posted
技术标签:
【中文标题】通过比较两个表来更新 SQL 查询【英文标题】:Update SQL query by comparing two table 【发布时间】:2015-09-01 06:42:27 【问题描述】:如何通过比较两个表来更新sql列中的查询?这可能是重复的问题,但仍然无法解决我的问题。任何帮助将不胜感激。
到目前为止我已经尝试过,但是错误
UPDATE b SET b.STAMP = b.STAMP + 10 FROM TB_FWORKERSCH b,TB_FWORKERCN a
WHERE a.ISSDATE>='20150401' AND a.UKEY=b.UKEY2 and b.STAMP=0 AND b.IG_SUMINS!=0
DB2 数据库
【问题讨论】:
尝试 UPDATE b SET... 而不是 UPDATE TB_FWORKERSCH b 试过了。错误 -> 该命令被作为 SQL 语句处理,因为它不是有效的命令行处理器命令 AND b.IG_SUMINS0 而不是 AND b.IG_SUMINS!=0 【参考方案1】:DB2 不允许 JOIN 或 FROM 用于 UPDATE 子句(这在 SQL 标准中也没有指定)。
您可以使用相关的子查询来实现您想要的:
UPDATE tb_fworkersch b
SET stamp = stamp + 10
WHERE EXISTS (SELECT 1
FROM tb_fworkercn a
WHERE a.issdate >= '20150401'
AND a.ukey = b.ukey2)
AND b.stamp = 0
AND b.ig_sumins <> 0
【讨论】:
【参考方案2】:试试这个:
MERGE INTO TB_FWORKERSCH b
USING TB_FWORKERCN a
ON a.UKEY=b.UKEY2
AND a.ISSDATE>='20150401' AND b.STAMP=0 AND b.IG_SUMINS<>0
WHEN MATCHED
THEN UPDATE SET b.STAMP = b.STAMP + 10;
【讨论】:
hmm .. 错误 -> 在“B.STAMP = B.STAMP +”之后发现了一个意外的令牌“10 FROM TB_FWORKERSCH b INNER JOIN TB_”。 @user3835327:- 更新了我的答案。请检查!以上是关于通过比较两个表来更新 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
需要通过比较两个表来显示 Total Customer 的 MAX COUNT