因此给出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 脚本中可能吗?
请注意,我们不能使用 View 或计算列作为要求。
最佳答案
这里不需要任何循环。通过简单的更新即可实现您的目标。
但是由于 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)
关于mysql - SQL 循环使用另一个表中的值填充值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34922193/