如何在PL/SQL中连接子查询?
我需要在oracle中加入子查询。如果联接操作出现语法错误,则此操作无效如何在PL/SQL中连接子查询?,sql,join,plsql,subquery,Sql,Join,Plsql,Subquery,我需要在oracle中加入子查询。如果联接操作出现语法错误,则此操作无效 select s1.key, s1.value, s2.value from ((select key, value from tbl where id = 1) as s1 join (select key, value from tbl where id = 2) as s2 on s1.contract = s2.contract);
select s1.key, s1.value, s2.value
from ((select key, value
from tbl
where id = 1) as s1
join
(select key, value
from tbl
where id = 2) as s2
on s1.contract = s2.contract);
你的括号太多了
SELECT
s1.key,
s1.value,
s2.value
FROM (SELECT
key,
value
FROM tbl
WHERE id = 1) AS s1
JOIN (SELECT
key,
value
FROM tbl
WHERE id = 2) AS s2
ON s1.contract = s2.contract;
去掉最外面的圆括号。您应该在内联视图中选择要加入合同的字段:
SELECT
s1.key,
s1.value,
s2.value
FROM (SELECT
key,
value
FROM tbl
WHERE id = 1) AS s1
JOIN (SELECT
key,
value
FROM tbl
WHERE id = 2) AS s2
ON s1.contract = s2.contract;
SELECT s1.key, s1.value, s2.value
FROM (
SELECT contract, key, value
FROM tbl
WHERE id = 1
) as s1
JOIN (
SELECT contract, key, value
FROM tbl
WHERE id = 2
) as s2
ON s1.contract = s2.contract
明确提及连接的类型,即内部连接、左侧外部连接等。您能发布准确的错误消息吗?您正在连接不在内联视图中的列协定。去掉最外面的括号并指定内部联接的类型解决了问题。对于我来说,我必须删除表别名上的as:SELECT s1.key、s1.value、s2.value FROM SELECT CONTACT、key、,来自tbl的值,其中id=1 s1连接选择合同,键,来自tbl的值,其中id=2 s2在s1.contract=s2.contract上