我試圖在Oracle中使用LEFT JOIN連接兩個表。我只需要包含「正確」連接表中的第一條記錄。PL-SQL - 一對多關係中的第一條記錄left join
見下面的例子:
表A
code | emp_no
101 | 11111
102 | 22222
103 | 33333
104 | 44444
105 | 55555
表B
code | city | county
101 | City1 | Country1
101 | City2 | Country1
101 | City3 | Country1
102 | City4 | Country2
103 | City5 | Country3
預期輸出:
code | emp_no | city | county
101 | 11111 | City1 | Country1
102 | 22222 | City4 | Country2
103 | 33333 | City5 | Country3
104 | 44444 | NULL | NULL
105 | 55555 | NULL | NULL
我需要從表B中選擇第一個匹配的記錄並忽略所有其他行。
上面的查詢猜想作品:
SELECT *
FROM TABLE_A a
LEFT JOIN TABLE_B b ON b.CODE = a.CODE
AND b.CODE =
(
SELECT CODE
FROM TABLE_B
WHERE ROWNUM = 1
)
但我得到的錯誤: ORA-01799:一列可能不是外連接到一個子查詢
我該怎麼辦這個?使用ROW_NUMBER()函數
感謝
你是如何決定哪個是'第一'? –
注意:目前尚不清楚你想通過只檢索'ROWNUM = 1'來實現。無論如何,我已經寫了答案。 –