SQL如果有值,则从Table2中选择,否则从Table1中选择

时间:2015-03-24 17:17:10

标签: sql select join

我有两张包含以下数据的表格:

Table1

PRODUCT | PRICE | NEWPRICE

Table2

PRODUCT | PRICE | NEWPRICE

Table1已完成。已创建Table2以更新Table1Table1包含去年的数据,而Table2是最新的。但Table2仅包含今年PRODUCT的{​​{1}}个。

现在我尝试做的是:

NEWPRICE

有没有办法做到这一点?也许有某种SELECT Table1.PRODUCT, Table1.PRICE, **(IF Table2.NEWPRICE -> select this, ELSE Table1.NEWPRICE)**

PS:我知道表格不是明智的,但我现在必须与他们合作,因为我必须继续其他人的工作>。<

1 个答案:

答案 0 :(得分:1)

我相信这就是你想要的:

SELECT 
  Table1.PRODUCT, Table1.PRICE, COALESCE(Table2.NEWPRICE, Table1.NEWPRICE) AS "New Price"
FROM Table1 LEFT JOIN Table2 ON Table1.Product = Table2.Product

left join将获取Table1中的所有行以及来自Table2的匹配行,如果Table2中没有匹配的行,则Table2.NEWPRICE将为NULL,COALESCE将获得Table1.NEWPRICE值。

这假设表1中存在所有产品。如果不是这种情况,您可以构建具有两个表的并集的所有产品的源,并将其用作两个左连接的左侧,如下所示:

select 
  all_products.product, 
  Table1.PRICE, 
  coalesce(Table2.Newprice, Table1.Newprice) AS "New Price"
from (select product from table1 union all select product from table2) all_products
left join Table1 on all_products.product = Table1.product
left join Table2 on all_products.product = Table2.product
相关问题