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
已创建以更新 Table1
。 Table1
包含去年的数据,而 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
我有两个包含以下数据的表:
Table1
:
PRODUCT | PRICE | NEWPRICE
Table2
:
PRODUCT | PRICE | NEWPRICE
Table1
完成。 Table2
已创建以更新 Table1
。 Table1
包含去年的数据,而 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