oracle的full join关联的表限制条件在on后面与限制在子查询的结果是不一样

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle的full join关联的表限制条件在on后面与限制在子查询的结果是不一样相关的知识,希望对你有一定的参考价值。

参考技术A create table test_a(

id number,

name varchar2(10)

);

create table test_b(

id number,

name varchar2(10)

);

select * from test_a a full join test_b b on a.id=b.id and b.id=3 order by a.id,b.id;

select * from test_a a full join (select * from test_b where id=3) b on a.id=b.id order by a.id,b.id;

如果left join的情况查询的结果数据是一致的:

select * from test_a a left join test_b b on a.id=b.id and b.id=3 order by a.id,b.id;

select * from test_a a left join(select * from test_b where id=3) b on a.id=b.id order by a.id,b.id;

Oracle 当两个表关联时,用where条件关联快还是用join on关联快,还有其他啥区别

Oracle 当两个表关联时,用where条件关联快还是用join on关联快,还有其他什么区别吗?

一样的吧
如果用where是老语法的
用join是新语法
性能都一样 数据库优化器会自动识别
即使where后面加了很多其它条件

建议使用join on
因为写where如果忘记写关联条件 就成笛卡尔积了
join on 是个好的习惯能避免这种不必要的错误出现
参考技术A 这2个,只是2种不同的写法,只要索引运用得当,没有区别。

ORACLE 在执行前, 会对SQL语句进行预编译和优化的, 最终的执行顺序是一致的。
参考技术B 用主键和外键相关联
primary key:主键
foreign key:外键
PK:主键列,要求取值唯一且非空
FK:外键列,取值是相关联表的对应列的值,可以为空
参考技术C 没区别,建议用join on,通用.

以上是关于oracle的full join关联的表限制条件在on后面与限制在子查询的结果是不一样的主要内容,如果未能解决你的问题,请参考以下文章

Oracle表与表之间的连接方式(内连接:inner join 外连接 全连接: full outer join左连接:left outer join 右连接:right outer join(代码

oracle的full outer join如何排除掉空值

Oracle 当两个表关联时,用where条件关联快还是用join on关联快,还有其他啥区别

sql语句中的full join具体是怎么回事啊?

mysql join 谁是驱动表

SQL Fundamentals || 多表查询(内连接,外连接(LEFT|RIGHT|FULL OUTER JOIN),自身关联,ON,USING,集合运算UNION)