我有兩個表:加入多個列的兩個表沒有重複行
表A:
- ID
表B:
- ID1
- id2
- ...(很多其他列)
我想要得到B中的所有行,其中B.id1或B.id2是A.id(所有A.id都是不同的。 B)情況並非如此)。
我試着查詢:
create table C as
select B.*
from B
join A on (A.id = B.id1 or A.id = B.id2);
這個偉大的工程,除了它複製其中ID1和ID2都在ID列。 A是一個相對較小的表格(約5000行),而B是相當大的(約10億行)。
我想過的解決方案涉及按B的列進行分組,以便消除不同的行,將A的ID收集到數組中,並搜索數組中的id1和id2,並使用2個單獨的查詢來搜索分別爲id1和id2,然後合併兩個表。這些看起來都非常低效,特別是考慮到表格的大小。有沒有更好的方法來做到這一點,我錯過了?謝謝。
使用'select distinct'有什麼問題? – sgeddes
考慮到我的數據量,這太慢了。 – TheSlimyDog