【问题标题】:Insert values with select Postgres使用选择 Postgres 插入值
【发布时间】: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


    【解决方案1】:

    考虑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 的情况下,我仍然需要进行最后一次测试以运行最后一个内部连接,如果没有,则不需要运行它。 t1.code 不为空
    • 可以帮帮我吗?
    • @rbrt:这就是查询的作用。如果t1.code 上没有匹配,则不会插入该行。
    • 我需要在缺少的列上返回 null。可以为空的列是 t1.subscription。这可能吗?
    • @rbrt:好的,那么你想要left joins 而不是inner joins。首先将最后一个inner join 更改为left join,看看它是否符合您的要求。如果这还不够,那么两者都改变​​。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 2022-12-17
    • 2011-10-02
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多