我有两张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
暂无答案!
目前还没有任何答案,快来回答吧!