查询以从一个查询中的另一个 id 获取结果

Query to get result from another id in one query

我有以下简单的table

product_id    vendor_id    product_gtin    product_parent_id
646           1            123456789       0
4502          2            202020255       646

因此,我想从 product_parent

获取 id 4502 的产品 gtin

结果示例:

product_id    vendor_id    product_gtin    product_parent_id
646           1            123456789       0
4502          2            123456789       646

.

SELECT product_id, vendor_id, case when vendor_id !=1 then (select product_gtin from `products` where product_id = product_parent_id) else product_gtin end as gtin, product_parent_id FROM `products` where product_id in (646, 4502)

我的问题是,当我 运行 查询时,它不知道我指的是哪个 ID。所以我得到 NULL 作为 product_gtin for id 4502.

的结果

如有任何解决方法的建议,我们将不胜感激

您可以使用 table 别名:

select product_id, vendor_id, 
    case when vendor_id <> 1 
        then (select product_gtin from `products` p1 where p1.product_id = p.product_parent_id) 
        else product_gtin 
    end as gtin, 
    product_parent_id 
from `products` p
where product_id in (646, 4502)

您应该使用 self left join 而不是具有适当别名的子查询来引用列,因为我们使用相同的 table 两次。

select p.product_id, 
       p.vendor_id, 
       case when p.vendor_id != 1 then p1.product_gtin else p.product_gtin end as gtin, 
       p.product_parent_id 
 from `products` p lefr join `products` p1 on p1.product_id = p.product_parent_id
 where p.product_id in (646, 4502)