oracle的多表联接查询用法
来源:互联网 发布:模拟退火算法模型 编辑:程序博客网 时间:2024/04/19 16:44
一般公司的框架多数用到视图,而使用join进行多表连接则使用的更为频繁,今天总结一下join的用法。
假设表A: 假设表B:
ID NAME ID AGE
1 chi 1 20
2 hao 2 31
3 zhi
第一种情况:相等联接或者内联接
这种情况使用的次数最为频繁,很多人使用了其实也不知道自己使用了内联接的方法。最为简单的例子就是:
select * from A a, B b where a.ID=b.ID;结果就是:
ID NAME AGE
1 chi 20
2 hao 31
如果改为inner join来进行内联接的话,SQL语言为:
select * from A a inner join B b on a.ID=b.ID;
其实如果去掉判断语句之后,它其实就是求A表和B表的笛卡尔积。
第二种情况:左联接
左联接是以from后面的表为左表,join后面的表为右表进行联接,这时数据为左表为主,即左表的数据会被全部列出,而右表的信息只会列出符合条件的信息,当右表没有找到与左表相连的数据时,则联合表对应的右表信息默认为NULL,例子为:
select * from A a left join B b on a.ID = b.ID结果就是:
ID NAME AGE
1 chi 20
2 hao 31
3 zhi NULL第三种情况:右联接
右联接这种情况在普通情况下和左联接表相反,即右边表为主,左边表根据条件查询相应的信息,当左表没有找到与左表相连的数据时,则联合表对应的左表信息默认为NULL,例子为:
select * from A a right join B b on a.ID = b.ID
结果就是:
ID NAME AGE
1 chi 20
2 hao 31
不过有一种情况比较特殊,就是当联接的表超过2个以上时,是按照最右边的表为主,左边的表则都为左边,如:select * from A a right join B b on a.ID = B.ID right join C c on a.ID = c.ID
这时则C表为右表。
第四种情况:完全联接
这种情况就是将多个表的信息叠加查询,但是前提要求表的字段名称要一致,如:
select a.ID,a.NAME from A aunionselect b.ID,b.AGE as NAME from B b
结果就是:
ID NAME
1 chi
2 hao
1 20
2 31
- oracle的多表联接查询用法
- 多表联接查询
- 多表联接查询
- ef 多表联接查询
- 多表查询之联接
- Oracle 联接查询,字表多行字段合并为一行,以逗号分隔的查询SQL
- oracle数据库中的联接查询
- sql的联接查询
- Oracle inner join、left join、right join的联接查询
- SQL多表查询之一内联接
- Sql复杂查询--多表联接
- 多表联接查询select count()
- sqlite怎样实现多表联接查询
- sqlite怎样实现多表联接查询
- 表联接查询
- 三表联接查询
- oracle数据库之多表联接查询(一)
- Mysql联接查询-JOIN-从多个关联的表中查询数据
- ModelSim仿真流程
- request.setAttribute()、session.setAttribute()和request.getParameter()的联系与区别
- PAT 1047. Student List for Course
- statusbar—NOTIFICATION
- Linux 基本命令
- oracle的多表联接查询用法
- EBS 库存(Inventory)模块中组织复制功能(Organization Copy)介绍
- Java中字符串的“引用”传递
- 两个特殊的流对象(System.in和System.out)及打印流
- ORACLE LOB大对象处理
- ext 如何添加tabpanel
- maven 执行命令mvn help:system命令时报build failure错误的解决办法。
- Qt编译报错 undefined reference to vtable for ...
- 数据对齐