SQL大概如下
SELECT *
FROM t1,
t2 .. .. .
WHERE t1.id = t2.id
AND t3.xxx = t4.xxx(+);t3.xxx = t4.xxx(+)
在t4后面有一个 ‘+’ 号,听说这个好像是类似left join 一样的? 但是具体不清楚,请教下各位前辈 这个是什么意思
SELECT *
FROM t1,
t2 .. .. .
WHERE t1.id = t2.id
AND t3.xxx = t4.xxx(+);t3.xxx = t4.xxx(+)
在t4后面有一个 ‘+’ 号,听说这个好像是类似left join 一样的? 但是具体不清楚,请教下各位前辈 这个是什么意思
解决方案 »
- 请问一下视图和存储过程的作用
- undo表空间多久释放?
- 如何设置oracle数据库在晚上12点自动备份呢
- pl/sql 中能开发多线程的程序吗?
- 关于安装Oracle时出现“无法将新用户添加到本地组中。。。”的问题
- PL/SQL Developer中存储过程存放位置?
- 急,在oracle哪个系统表中能够查出用户表是否存在
- 执行存储过程出现错误04021,但是一样的存储过程内容,换个名字就可以执行了。。
- 如何在oracle8i中建立连接?
- occi连接oracle11 rac集群 双节点的 监听地址 连接不上 报12514错误 单节点的非集群正常
- pl/sql的帮助文档
- ORA-06502: PL/SQL: 数字或值错误 原始变量长度过长如何解决?
返回左右2表所有符合t3.xxx = t4.xxx条件的记录,并且返回左边表(本例即t3)中其他所有不符合连接条件的记录。
右连接
的老式写法.建议改为left join , right join
--左联:
select a.id,a.name,b.address from a,b
where a.id=b.id(+)
--右联:
select a.id,a.name,b.address from a,b
where a.id(+)=b.id
--外联
SELECT a.id,a.name,b.address
FROM a,b
WHERE a.id = b.id(+)
UNION
SELECT b.id,'' name,b.address
FROM b
WHERE NOT EXISTS (
SELECT * FROM a
WHERE a.id = b.id);
在9i以上,已经开始支持SQL99标准,所以,以上语句可以写成:
--默认内部联结:
select a.id,a.name,b.address,c.subject
from (a inner join b on a.id=b.id)
inner join c on b.name = c.name
where other_clause
--左联
select a.id,a.name,b.address
from a left outer join b on a.id=b.id
where other_clause
--右联
select a.id,a.name,b.address
from a right outer join b on a.id=b.id
where other_clause
--外联
select a.id,a.name,b.address
from a full outer join b on a.id=b.id
where other_clause
or
select a.id,a.name,b.address
from a full outer join b using (id)
where other_clause