Oracle的多个join的区别
来源:互联网 发布:python spark安装 编辑:程序博客网 时间:2024/06/05 17:58
1.栏位合并
left join、right join、inner join、full join
left join(左联接): 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接): 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接): 只返回两个表中联结字段相等的行
FULL JOIN :关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。
例子一:人员表和订单表的关联
create table Persons(
Id_P varchar2(10),
LastName varchar2(20),
FirstName varchar2(20),
Address varchar2(50),
City varchar2(50)) ;
create table Orders(
Id_O varchar2(10),
OrderNo varchar2(10),
Id_P varchar2(10));
select * from Persons for update;
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
select * from Orders for update;
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65
--left join 返回左Persons表中的所有记录和右表orders中联结字段相等的记录连接
select a.*,b.* from Persons a
left join orders b on a.id_p=b.id_p;
--inner join 返回两个表中联结字段相等的行
select a.*,b.* from Persons a
inner join orders b on a.id_p=b.id_p;
--等价于
select a.*,b.* from Persons a,orders b where a.id_p=b.id_p;
--right join 返回包括右表orders中的所有记录和左表Persons中联结字段相等的记录
select a.*,b.* from Persons a
right join orders b on a.id_p=b.id_p;
---full join 如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。
--也就是当两个表ID相同时合并为一笔,ID不同时,也同样显示。
select a.*,b.* from Persons a
full join orders b on a.id_p=b.id_p;
--join等价于inner join
select a.*,b.* from Persons a
join orders b on a.id_p=b.id_p;
例子二;稽核与影像数据匹配的统计结果
select * from (
select data_month,count(deal_state) 完全匹配 from
source_image_data_list
where deal_state=1
group by data_month) a
join
(
select data_month,count(deal_state) 部分匹配 from
source_image_data_list
where deal_state=2
group by data_month)b
on a.data_month=b.data_month
order by a.data_month;
- Oracle的多个join的区别
- oracle的left join和inner join的区别
- oracle中left join和right join的区别
- oracle中left join和right join的区别
- oracle--left join and 和left join where的区别
- oracle中left join和right join的区别
- oracle中left join和right join的区别
- Oracle traditional join与ANSI join的区别
- oracle--left join and 和left join where的区别
- oracle--left join and 和left join where的区别
- oracle--left join and 和left join where的区别
- Oracle的join..on连接区别
- join 、left join 的区别
- oracle中left join和right join和inner join的区别
- oracle中left join和right join和inner join的区别
- Oracle inner join、left join、right join 、+左边或者右边的区别
- Oracle inner join、left join、right join 、+左边或者右边的区别
- Oracle inner join、left join、right join 、+左边或者右边的区别
- CString UTF8
- 逆风飞扬 -- 吴士宏
- 强制svn checkin时必须写注释
- .net ftp 操作
- Android编译系统详解(一)
- Oracle的多个join的区别
- 注册表中的程序卸载路径
- 一个倒计时的JS
- utf-8与Unicode互转.
- c语言结构体变量和结构体指针
- 智能指针 auto_ptr 源码解析
- 自己动手解决HEAP: Free Heap block XXX modified at YYY after it was freed问题
- 遇见未知的自己 - 张德芬
- eclipse servers view tomcat内存配置