我是postgresql的新手,想知道从一个表中选择数据的最有效方法是什么,如果在sedond表中有一个具有相同id的行,那么从第二个表中选择数据而不是第一个表中的数据
例:我有两张相同结构的桌子,例如。 products
和products_new
列id, title, price
。
我想显示products
中的所有行,但是如果表id
中有一行具有相同的products_new
,我想显示来自{{1}的id
的值表}
products_new
这样做的最佳方式是什么?
答案 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将获得第一个非空值。