Postgresql:从第一个表中选择或替换第二个表中的数据

时间:2014-05-19 13:18:14

标签: sql postgresql join

我是postgresql的新手,想知道从一个表中选择数据的最有效方法是什么,如果在sedond表中有一个具有相同id的行,那么从第二个表中选择数据而不是第一个表中的数据

例:我有两张相同结构的桌子,例如。 productsproducts_newid, title, price。 我想显示products中的所有行,但是如果表id中有一行具有相同的products_new,我想显示来自{{1}的id的值表}

products_new

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

select
    id,
    coalesce(pn.title, p.title) as title,
    coalesce(pn.price, p.price) as price
from
    products p
    left join
    products_new pn using(id)

left join将保留左表中的所有行,即使右表中没有对应关系也是如此。 Coalesce将获得第一个非空值。