我要求有条件地加入两张桌子。 对于Ex:
T1
--Col1
--Col2
--Col3
T2
--Col1
--Col2
--Col3
从两个表中加入Col1上的T1和T2,如果Col1为NULL,则从两个表中加入Col2上的T1和T2。 怎么做到这一点?
答案 0 :(得分:1)
您可以使用下面的查询,该查询使用case
crtieria中的join
条件
select *
from
t1 join t2
on
case
when (t1.col1 is NULL or t2.col1 is NULL)
then t1.col2
else t1.col1
end
=
case
when (t1.col1 is NULL or t2.col1 is NULL)
then t2.col2
else t2.col1
end
答案 1 :(得分:0)
SELECT
*
FROM
T1 INNER JOIN T2
ON T1.COL1=T2.COL1 OR T1.COL2=T2.COL2
答案 2 :(得分:0)
你的条件含糊不清。如果col1
只在一个表中NULL
,会怎样?
在任何情况下,您都可以将逻辑指定为:
select . . .
from t1 join
t2
on (t1.col1 = t2.col1) or
( (t1.col1 is null or t2.col1 is null) and t1.col2 = t2.col2)
如果任一列为NULL
,则第一个条件将失败。
答案 3 :(得分:0)
我正在使用内联视图。检查此查询。
select * from
(select t1.col1,t1.col2,t1.col3 from table1 t1)q1,
(select t2.col1,t2.col2,t2.col3 from table1 t2)q2
where t1.col1=t2.col1 or t1.col2=t2.col2;
答案 4 :(得分:0)
全部谢谢:)
我只是提出以下问题,请告诉我这是否有效。
Select * from
(select col1, col2, col3, coalesce(col1, col2) as join_key)q1,
(select col1, col2, col3, coalesce(col1, col2) as join_key)q1,
where q1.join_key = q2.join_key