我正在尝试合并DB2SQL中的两个表,它不断向我提供sql状态21506和错误消息sql0788。
到目前为止,我的情况是:
merge into table1 as tgt
using table2 as src
on src.key1 = tgt.key1 and src.key2 = tgt.key2
when matched then
update set
(fld1, fld2, fld3) = (src.fld1, src.fld2, src.fld3)
when not matched then
insert (fld1, fld2, fld3) values (src.fld1, src.fld2, src.fld3)
我搜索了这样的复制品:
select src.key1, src.key2, count(*)
from table1 as tgt
inner join table2 as src on tgt.key1 = src.key1 and tgt.key2 = src.key2
group by src.key1, src.key2
having count(*) > 1
没有(重复)记录返回。我错过了什么?
2条答案
按热度按时间ddhy6vgd1#
sqlstate 21506意味着
为merge语句的update、delete或insert操作多次标识了目标表的同一行。
所以在src中有两行有相同的键。。。
你不能用这句话找到他们
因为内部连接,这意味着表2中的重复行在表1中没有匹配项。
这应该给你看。。
sshcrbum2#
所以问题出在
update
.而不是:
这样做:
在没有改变其他任何东西的情况下,这起作用了,为什么?还是不知道。。。