>我有一个表,其中包含引用其他表中其他行的列。 例如: - 表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'
(
干杯!!