网站首页 > 技术文章 正文
一、简介:
多表连接查询通过表之间的关联字段,一次查询多表数据。
下面将依次介绍 多表连接中的如下方法:
1、from a,b
2、inner join
3、left outer join
4、right outer join
二、例子:
以下采用oracle的scott用户中的两张表dept和emp举例,
两个表的deptno字段关联。
表结构如下:
(1)、dept(部门表)
(2)、emp(雇员表)
1、from 表1,表2
语法:select a.x,b.y from a,b where a.id=b.id;
实例:
返回所有满足where条件的行
select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门
from scott.emp a, scott.dept b
where a.deptno = b.deptno;
结果:
2、inner join
语法:select a.x from a inner join b on a.id=b.id;
inner 可以省略.
实例:
select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门
from scott.emp a join scott.dept b
on a.deptno = b.deptno ;
结果同上。
3、left outer join
查询结果除了返回包含连接条件的行,还包含左表(a)中不满足连接条件的行,
其中不满足连接条件的行中b表的字段值将被置为空。
语法:select a.x from a inner left outer join b on a.id=b.id;
outer 可以省略.
实例:
select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门
from scott.emp a left outer join scott.dept b
on a.deptno = b.deptno
结果:
当查询中出现过滤条件时:
1)当连接条件后面有where条件时:
select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门
from scott.emp a left outer join scott.dept b
on a.deptno = b.deptno where b.dname like 'SALES'
解释:先根据连接条件a.deptno = b.deptno查询,再对查询结果按过滤条件查询。
结果:
2)当连接条件后面有and条件时:
select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门
from scott.emp a left outer join scott.dept b
on (a.deptno = b.deptno and b.dname like 'SALES')
解释:先对b表按过滤条件查询,再对结果执行左连接查询。
结果:
4 、right outer join
查询结果除了返回包含连接条件的行,还包含右表(b)中不满足连接条件的行,
其中不满足连接条件的行中a表的字段值将被置为空。
语法:select a.x from a inner right outer join b on a.id=b.id;
outer 可以省略.
实例和结果略。
猜你喜欢
- 2024-11-16 从阿里手册引出的Join查询思考(阿里技术手册)
- 2024-11-16 Python中join()方法——字符串、路径拼接的常用方法
- 2024-11-16 让程序员头疼的微服务下数据聚合join(一)
- 2024-11-16 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程你是否知道?
- 2024-11-16 MySQL的Join到底能不能用,一文搞懂它
- 2024-11-16 一文看懂Mycat跨分片Join实现--全局表、ER分片、HBT、sharejoin
- 2024-11-16 为什么大厂不建议使用多表join?(为什么要多表查询)
- 2024-11-16 SQL Server 2012 高级用法(三)之Join
- 2024-11-16 什么,LEFT JOIN 会变成 JOIN?(left join作用)
- 2024-11-16 LINUX中JOIN用法(linux jour)
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-