2014-07-22 84 views
1

我需要通過ID連接兩個表格,其中一個ID以數字形式存儲(即12345),另一個ID以管道分隔字符串形式存儲(即12345 | 12346 | 12347)。有兩種方法可以快速加入嗎?謝謝!Hive SQL:如何將數字連接到分隔數字字符串

**我猜如果數字ID(12345)在數字串(12345 | 12346 | 12347)中,我應該說連接。從理論上講,這個例子會加入,因爲12345在管道分隔字符串中。

+0

我不知道快。如果用逗號分隔,'FIND_IN_SET'將很好地工作。也許你可以用逗號替換管道然後找到。 – paqogomez

回答

0

我不清楚你是指SQL還是HiveQL。

有沒有快速的方法來加入這兩個?

不,不是真的。

您的數據庫架構違反了第一範式。加入這些表格會很慢並且容易出錯。

對於DB無關的嘗試:

SELECT * 
FROM Table1 t1 
INNER JOIN Table2 t2 
    ON t2.id LIKE ('%' + CAST(t1.id as varchar) + '%') 
+0

這是HiveQL。帶管道分隔字符串的「表」實際上來自外部文件。我只是儘量保持這個問題的簡單性。 – user3865705

1

這將工作在蜂巢

select obj1.*,obj2.some_fields from table1 obj1 
JOIN table2 obj2 
on (obj1.id=split(obj2.id,'|')[0]) 
相關問題