SQL select 来自 Table2 如果它有值,否则来自 Table1

SQL select from Table2 if it has a value, else from Table1

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

Table1:

PRODUCT | PRICE | NEWPRICE

Table2:

PRODUCT | PRICE | NEWPRICE

Table1 完成。 Table2 已创建以更新 Table1Table1 包含去年的数据,而 Table2 是最新的。但是 Table2 只包含 PRODUCT 今年有 NEWPRICE

现在我要做的是:

SELECT 
    Table1.PRODUCT, Table1.PRICE, 
    **(IF Table2.NEWPRICE -> select this, ELSE Table1.NEWPRICE)**

有什么办法吗?也许有某种 JOIN?

PS:我知道这些表不是明智地创建的,但我现在必须使用它们,因为我必须继续其他人的工作>.<

我相信这就是你想要的:

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