Db2 使用子选择更新查询
x地址表1Db2 使用子选择更新查询,db2,Db2,x地址表1 Address_id,member_id,Primary,email1 7000012 56781 1 abcdef@gmail.com 7000013 56781 0 dummy@gmail.com 7000014 56781 0 abcdef@gmail.com 7000015 56782 1 mnopqr@gmail.com 7000016 56782 0 XYZXYZ@gmail.com 7000
Address_id,member_id,Primary,email1
7000012 56781 1 abcdef@gmail.com
7000013 56781 0 dummy@gmail.com
7000014 56781 0 abcdef@gmail.com
7000015 56782 1 mnopqr@gmail.com
7000016 56782 0 XYZXYZ@gmail.com
7000017 56782 0 mnopqr@gmail.com
我试图更新上表中的电子邮件,其中成员电子邮件不同于其他电子邮件
我试图通过创建两个临时表来实现这一点
x\u主要\u电子邮件\u表2
Address_id,member_id,priemail1
7000012 56781 abcdef@gmail.com
7000015 56782 mnopqr@gmail.com
x_档案付款_电子邮件_表3
Address_id,member_id,payemail1
7000013 56781 dummy@gmail.com
7000016 56782 XYZXYZ@gmail.com
以下是我的更新查询:
update x_addr_table1 x_addr
set email1=(
select T2.priemail1
from x_primary_email_table2 T2
where T2.member_id=x_addr.member_id
)
where x_addr.address_id in (
select T2.address_id from x_primary_email_table2 T2
) and x_addr.member_id in (
select T2.member_id
from x_primary_email_table2 T2, x_profilepay_email_table3 t3
where t2.member_id=t3.member_id and
upper(T2.priemail1)!=upper(T3.payemail1)
)
我在这里得到一个错误:
DB21034E命令作为SQL语句处理,因为它是
不是有效的命令行处理器命令。在SQL处理过程中
返回:SQL0811N标量fullselect的结果,选择到
语句,或值转换为多行语句。
SQLSTATE=21000
谢谢你的帮助 您可以直接在源表上执行此操作
update x_addr_table1 x
set email = (select email
from x_addr_table1
where member_ID = x.member_id and primary = 1)
where Primary = 0
and email <> (select email
from x_addr_table1
where member_ID = x.member_id and primary = 1)