复杂的配置单元查询

lf3rwulv  于 2021-06-24  发布在  Hive
关注(0)|答案(0)|浏览(180)

我有两张table
顾客

CREATE TEMPORARY TABLE customers (id int);
INSERT OVERWRITE TABLE customers values (290),(390),(195),(580),(280),(775),(990);

客户合并

CREATE TEMPORARY TABLE customers_merge (id int, new_id int);
INSERT OVERWRITE TABLE customers_merge values (290,190),(390,190),(490,190),(580,280),(680,280),(280,150),(780,150),(990,620);

客户合并表是一个实体解析步骤的结果,在该表中,为现有客户分配了一个新的\u id。
我正在编写一个查询,它将为我提供现有id的新的\u id。

SELECT c.id as id,coalesce(m.new_id, c.id) as new_id
FROM 
customers c
left join
customers_merge m
on c.id = m.id

结果

id  new_id
290 190
390 190
195 195
580 280
280 150
775 775
990 620

这个问题没有告诉我我在找什么。检查id“580”它给我“280”正确的新的\u id应该是“150”,因为“280”被合并到“150”。
正确的结果应该是。

id  new_id
290 190
390 190
195 195
580 150
280 150
775 775
990 620

如何形成查询以获得预期/正确的结果?
也许是这个?

select
 c.id as id,
 coalesce(b.new_id,a.new_id,c.id) as new_id
from 
customers c
left join
customers_merge a
 on c.id = a.id
left join 
customers_merge b
 on a.new_id = b.id

导致

id  new_id
290 190
390 190
195 195
580 150
280 150
775 775
990 620

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题