【发布时间】:2017-12-30 06:12:54
【问题描述】:
我正在尝试在 Oracle 中使用 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: 列不能外连接到子查询
我该怎么做?
谢谢
【问题讨论】:
-
你如何决定哪个是“第一”?
-
注意:目前尚不清楚您要通过仅检索
ROWNUM = 1来实现什么。反正我已经写好了答案。
标签: oracle join plsql left-join