首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Iseries SQL更新

Iseries SQL更新
EN

Stack Overflow用户
提问于 2016-06-29 13:59:30
回答 2查看 1.3K关注 0票数 1

表1

代码语言:javascript
复制
Column1  Column2
aa         12
bb         12
cc         12
aa         12
bb         12

表2

代码语言:javascript
复制
Column1  Column2
aa         12
bb         13
cc         14
aa         15
bb         16

现在,使用Sql,我需要使用基于table2的table2.Column 2将table1.Column 2更新为column1和table1.column1记录。

代码语言:javascript
复制
update Table1 a set a.Column2 = ( select b.Column2from Table2
b where A.column1= b.column1)

上面的查询会引发错误:

列或变量中不允许的空值。

我试图在两个不同的系统之间复制数据。

EN

回答 2

Stack Overflow用户

发布于 2016-06-29 14:11:19

似乎有一些table1行没有任何匹配的table2行。在这种情况下,子查询返回NULL。我猜表1.列2不允许空值?

添加一个WHERE子句,只更新table2中匹配的行。

代码语言:javascript
复制
update Table1 a set a.Column2 = (select b.Column2 from Table2 b
                                 where A.column1= b.column1)
where exists (select 1 from Table2 b2
              where A.column1= b2.column1)
票数 2
EN

Stack Overflow用户

发布于 2016-06-29 14:18:54

除了@jarih的答案。

如果您在当前支持的版本上,即。7.1或更高..。

你可以用MERGE

代码语言:javascript
复制
merge into table1 A
using (select column1, column2 from table2) as B
on a.column1 = b.column1
when matched then
 update set a.column2 = b.column2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38101883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档