x_addr_table1
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
我正在尝试更新上表中的电子邮件,其中成员电子邮件的不同与其他电子邮件不同。
我正在尝试通过创建2个临时表来实现此目的。
x_primary_email_table2
Address_id,member_id,priemail1
7000012 56781 abcdef@gmail.com
7000015 56782 mnopqr@gmail.com
x_profilepay_email_table3
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标量全选的结果,SELECT INTO 声明或VALUES INTO语句不止一行。 SQLSTATE = 21000
感谢帮助。
答案 0 :(得分:0)
您可以直接在源表
上执行此操作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)