选择具有新列的语句多个表,其值取决于不同表中的其他列



>我有一个表,其中包含引用其他表中其他行的列。 例如: - 表Table_Cart有一个列乘积作为数字 - 如果产品是水果,则指向表Table_Fruit中的一行, - 如果产品是蔬菜,则指向表Table_Vegetable中的一行 - 如果以上都不是,我们可以将值保留为空

我需要生成一个输出,例如为每个产品说明它是"水果"/"蔬菜"/空的 所以它应该看起来像

| product | category |
| 1111111 | fruit    |
| 2222222 | vegetable|
| 1111113 | fruit    |
| 4444444 |          |

今天我写的sql是

select T1.product, T2.category
from Table_Cart T1 left join
(select product, "fruit" as "category" from Table_fruit
union
select product, "vegetable" as "category" from Table_vegetable
) T2
on T1.product = T2.product

有没有更好的写法?

谢谢

您可以避免使用子查询,并按如下方式进行直接LEFT JOIN

SELECT
T.PRODUCT,
CASE
WHEN TF.PRODUCT IS NOT NULL THEN 'fruit'
WHEN TV.PRODUCT IS NOT NULL THEN 'vegetable'
END AS CATEGORY
FROM
TABLE_CART T
LEFT JOIN TABLE_FRUIT TF ON ( T.PRODUCT = TF.PRODUCT )
LEFT JOIN TABLE_VEGETABLE TV ON ( T.PRODUCT = TV.PRODUCT )

另外,请注意,列("fruit", "vegetable"(的常量值的"(双引号(不正确,应将其包装在'(单引号(中,例如('fruit', 'vegetable'(

干杯!!

最新更新