【发布时间】:2020-06-20 19:55:14
【问题描述】:
我需要做一个insert,但是在我需要把insert的值和其他表比较之前,这样我也可以在我要插入的当前表中插入其他表的值:
我不知道插入语法怎么写
Insert into TABLE_3 (code, value, description)
values 123, 20000, teste
【问题讨论】:
标签: sql postgresql join select sql-insert
我需要做一个insert,但是在我需要把insert的值和其他表比较之前,这样我也可以在我要插入的当前表中插入其他表的值:
我不知道插入语法怎么写
Insert into TABLE_3 (code, value, description)
values 123, 20000, teste
【问题讨论】:
标签: sql postgresql join select sql-insert
考虑insert ... select ... 语法。 values() list 很方便。
insert into table_3(code, value, desription, subscription, value_percent, total_value)
select
v.code,
v.value,
v.description,
t1.subscription,
t2.value_percent,
v.value * t2.value_percent / 100.0 total_value
from (values (123, 20000, 'teste')) v(code, value, description)
inner join table_1 t1 on t1.code = v.code
inner join table_2 t2 on t2.subscription = t1.subscription
【讨论】:
t1.code 上没有匹配,则不会插入该行。
left joins 而不是inner joins。首先将最后一个inner join 更改为left join,看看它是否符合您的要求。如果这还不够,那么两者都改变。