我有一个看起来像这样的架构
table 1
-------
ID TYPE VALUE
==============
1 A 10
1 B 200
2 A 20
2 B 500
table 2
-------------
ID typeA typeB
==============
1 10 200
2 20 500
我的迁移脚本是
update table2 set typeA = (select t1.value from table1 t1
where t1.ID = table2.ID and t1.type = 'A'),
typeB = (select t1.value from table1 t1 where t1.ID = table2.ID and t1.type='B');
现在,当每个id有两种类型时,它可以正常工作,如果缺少某个类型的行,则会失败,并显示sql错误代码407。我尝试使用IFNULL,COALESCE,但似乎没有任何效果。我知道这是一个必须多次解决但在任何地方都无法得到直接答案的问题。
答案 0 :(得分:1)
COALESCE
应该适合你,这会给你一个错误吗?
update table2 t2
set typeA = COALESCE((select t1.value
from table1 t1
where t1.ID = t2.ID
and t1.type = 'A'), 0),
typeB = COALESCE((select t1.value
from table1 t1
where t1.ID = t2.ID
and t1.type='B'), 0);