Left Join 在 Oracle 中加入具有空值的列
Left Join in Oracle to Join columns with Null Value
我有一个 table 如下所示:
Table_a :
Pos_id col1 col2 value
12221 null null Car
12222 112 1111 Bike
12222 112 1112 Bus
12222 112 1113 Roller
Table_b :
pos_id col1 col2 line_nr
12221 100 1000 1
12222 112 1111 1
12222 112 1112 2
12222 112 1113 3
我想 select table_a 的值 line_nr 在 table_b.
中的 line_nr 是 1
所以我尝试了 LEFT JOIN。
select * from table_a
left join table_b
on a.pos_id = b.pos_id
and a.col1 = b.col1
and a.col2 = b.col2
where b.line_nr = 1;
所以这 select table_a 中没有空的列。
我需要 select 以下来自 table_a
的列
Pos_id col1 col2 value
12221 null null Car
12222 112 1111 Bike
您必须使用 left outer join 并且 accept 行与 line_nr = 1
或 NULL
SELECT a.POS_ID, a.COL1, a.COL2, a.VAL
FROM table_a a
LEFT OUTER JOIN table_b b
ON a.pos_id = b.pos_id
AND a.col1 = b.col1
AND a.col2 = b.col2
where nvl(b.line_nr,1) = 1
;
POS_ID COL1 COL2 VAL
---------- ---------- ---------- ------
12222 112 1111 Bike
12221 Car
这就是您的意思可能 - 从 a
中获取行 或者 匹配 b
并且有line_nr = 1
或不匹配(即line_nr is null
)
我有一个 table 如下所示:
Table_a :
Pos_id col1 col2 value
12221 null null Car
12222 112 1111 Bike
12222 112 1112 Bus
12222 112 1113 Roller
Table_b :
pos_id col1 col2 line_nr
12221 100 1000 1
12222 112 1111 1
12222 112 1112 2
12222 112 1113 3
我想 select table_a 的值 line_nr 在 table_b.
中的 line_nr 是 1所以我尝试了 LEFT JOIN。
select * from table_a
left join table_b
on a.pos_id = b.pos_id
and a.col1 = b.col1
and a.col2 = b.col2
where b.line_nr = 1;
所以这 select table_a 中没有空的列。
我需要 select 以下来自 table_a
的列Pos_id col1 col2 value
12221 null null Car
12222 112 1111 Bike
您必须使用 left outer join 并且 accept 行与 line_nr = 1
或 NULL
SELECT a.POS_ID, a.COL1, a.COL2, a.VAL
FROM table_a a
LEFT OUTER JOIN table_b b
ON a.pos_id = b.pos_id
AND a.col1 = b.col1
AND a.col2 = b.col2
where nvl(b.line_nr,1) = 1
;
POS_ID COL1 COL2 VAL
---------- ---------- ---------- ------
12222 112 1111 Bike
12221 Car
这就是您的意思可能 - 从 a
中获取行 或者 匹配 b
并且有line_nr = 1
或不匹配(即line_nr is null
)