我正在做一個左外連接,並且只返回匹配行,就像它是內連接一樣。Oracle,LEFT OUTER JOIN不從左表中返回所有行,而是像INNER JOIN一樣行爲
爲了簡化數據,我的第一個表(ROW_SEG),或左表看起來是這樣的:
ASN | DEPT NO
-----------------------
85 | 836
86 | null
87 | null
我的第二個表(RF_MERCHANT_ORG)具有DEPT_NAME,而我想,當一些其他的東西我有一個部門號碼。
DEPT NO | DEPT_NAME
-----------------------
836 | some dept name 1
837 | some dept name 2
838 | some dept name 3
在這種情況下,我的加入後,我只得到1行,對於ASN 85有一個部門號。
...omitting a bunch of SQL for simplicity
, ROW_SEG AS (
SELECT *
FROM VE_SI_EC_OI
WHERE ROW_NUM BETWEEN 1 AND 1000 -- screen pagination, hardcoding values
)
-- ROW_SEG has a count of 1000 now
, RFS_JOIN AS (
SELECT ROW_SEG.*
,MO.BYR_NO
,MO.BYR_NAME
,MO.DEPT_NAME
FROM ROW_SEG
LEFT OUTER JOIN RF_MERCHANT_ORG MO
ON ROW_SEG.DEPT_NO = MO.DEPT_NO
WHERE MO.ORG_NO = 100
)
SELECT * FROM RFS_JOIN; -- returns less than 1000
我只收回行數等於行號的行數。因此,在我上面的小數據示例中,我只得到ASN 85的1行,但我希望所有的行都填充了BYR_NO,BYR_NAME和DEPT_NAME行,我有DEPT_NO,如果沒有,則爲空/空列。
哪個表是'ORG_NO'? – Allan 2014-12-04 19:47:15
Allan的評論是一個很好的例子,爲什麼在查詢中正確使用_all_列的別名很重要。 – 2014-12-04 19:49:00
rf_merchant_org – SomeRandomDeveloper 2014-12-04 19:49:02