因此给出了2个表的表结构:
LINE_ITEM
line_item_id item_id a_basic a_original b_basic b_original c_basic c_original
1 1 NULL 5 NULL 2 NULL 1
2 1 NULL 6 NULL 100 NULL 5
3 2 NULL 10 NULL 50 NULL 15
4 2 NULL 2 NULL 12 NULL 100
项目
item_id rate
1 1.5
2 2
我需要使用此计算填充line_item表中的空值:
item.rate x x_original
所以对于line_item_id:1,它将是
a_original x item_id.rate (5 x 1.5)
这是否可以在支持sql server和mysql的SQL脚本中使用?
请注意,我们不能使用视图或计算列作为要求。
答案 0 :(得分:2)
这里不需要任何循环。您的目标可以通过简单的更新来实现。
但是由于MySQL和SQL Server中的更新连接语法不同,因此您无法通过某些“通用”查询来执行此操作。
在SQL Server中它应该是
update LI set
a_basic = coalesce(a_basic, LI.a_original * I.rate),
b_basic = coalesce(b_basic, LI.b_original * I.rate),
c_basic = coalesce(c_basic, LI.c_original * I.rate)
from line_item as LI
left outer join item as I on I.item_id = LI.item_id
在MySQL中它应该是
update line_item as LI
left outer join item as I on I.item_id = LI.item_id
set
a_basic = coalesce(a_basic, LI.a_original * I.rate),
b_basic = coalesce(b_basic, LI.b_original * I.rate),
c_basic = coalesce(c_basic, LI.c_original * I.rate)