我试图在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'来实现。无论如何,我已经写了答案。 –