我有两个要联接的表(Table1
和Table2
),但是联接标准因Country
的{{1}}列中的数据而异
对于Table1
列中所有值为'UK'的记录,我想加入Country
,JoinField1
和JoinField2
。
对于JoinField3
列中所有值为“ USA”的记录,我希望加入Country
,JoinField2
和JoinField3
上。
目前,我只是使用不同的联接条件将JoinField4
两次联接到Table2
上。但是,我想避免这种情况,因为Table1
拥有数亿行数据,并且我的查询运行出现问题。
是否有更有效的方式进行此联接? 请注意,我正在使用DB2 SQL,并且不能在查询中使用函数。
答案 0 :(得分:0)
您可以这样表示:
select . . .
from table2 t2 join
table1 t1
on t2.country = t1.country and
t2.Joinfield2 = t1.Joinfield2 and
t2.Joinfield3 = t1.Joinfield3 and
( (t2.country = 'UK' and t2.Joinfield1 = t1.Joinfield1) or
(t2.country = 'USA' and t2.Joinfield4 = t1.Joinfield4)
);
我不确定这是否会提高性能,因为or
可能会成为性能杀手。但是(country, joinfield2, joinfield3, joinfield1, joinfield4)
上的索引会有所帮助。