多个left join 怎么执行?
来源:互联网 发布:jquery weui.js 编辑:程序博客网 时间:2024/04/29 18:22
源址:http://bbs.csdn.net/topics/390741161
先说明2点:
1、left join是逻辑操作符,只用于保证“数据正确”
2、优化器才是最终决定执行顺序的地方,一般来说会按照你的意愿顺序去执行,但是并不完全能保证。
回答你的问题:
1. 求教多个left join 怎么执行
eg:
select * from a left join b on a.abid = b.baid left join c on c.cbid = b.bcid
顺序是先a,b组合成一个虚拟表,然后虚拟表再和C表关联
2.多个left join连接,记录条数是不是主表的条数
eg
select * from a
left join b on a.abid = b.baid
left join c on c.cbid = b.bcid
...
没有where语句 那么查询出来的结果集条数是不是等于a的记录条数
左联的意思是返回左表的数据,右表中不能匹配出来的数据以null标识,但是由于你C表是和B左联而不是和A左联,所以数量不一定是A的数量,看清楚,不一定而已
即使是A LOJ B的结果,记录条数也不一定等于A的记录条数,除非join predicate右边(也就是B表)的列是唯一的。
多个left join查询示例(b表id不是唯一)
mysql> select * from a;+----+------+| id | name |+----+------+| 1 | a1 || 2 | a2 || 3 | a3 |+----+------+3 rows in setmysql> select * from b;+----+------+| id | name |+----+------+| 1 | b1 || 2 | b2 || 2 | b3 |+----+------+3 rows in setmysql> select * from c;+----+------+-------+| id | name | name2 |+----+------+-------+| 1 | c11 | c12 || 2 | c21 | c22 || 3 | c31 | c32 |+----+------+-------+3 rows in setmysql> select a.*,b.* from a left join b on a.id=b.id ;+----+------+------+------+| id | name | id | name |+----+------+------+------+| 1 | a1 | 1 | b1 || 2 | a2 | 2 | b2 || 2 | a2 | 2 | b3 || 3 | a3 | NULL | NULL |+----+------+------+------+4 rows in setmysql> select a.*,b.*,c.* from a left join b on a.id=b.id left join c on b.id=c.id;+----+------+------+------+------+------+-------+| id | name | id | name | id | name | name2 |+----+------+------+------+------+------+-------+| 1 | a1 | 1 | b1 | 1 | c11 | c12 || 2 | a2 | 2 | b2 | 2 | c21 | c22 || 2 | a2 | 2 | b3 | 2 | c21 | c22 || 3 | a3 | NULL | NULL | NULL | NULL | NULL |+----+------+------+------+------+------+-------+4 rows in setmysql>
0 0
- 多个left join 怎么执行?
- 数据库多个left join如何执行
- mysql多个left join
- 【acsess 多个left join】acsess 数据库 多个left join关联
- 多个left join 产生多个结果
- Mysql 多个子查询 多个LEFT JOIN 视图创建
- Mysql 多个子查询 多个LEFT JOIN 视图创建
- ACCESS中不支持多个left join解决方案
- sybase有多个left join 和多个union会报错
- msyql left join on 后面多个条件
- msyql left join on 后面多个条件
- 多个left join (+)实现注意的规律
- 多个连续的left join连接顺序验证
- sql left join right join outer join 执行步骤总结
- SQL LEFT JOIN WHERE 的执行顺序
- 多个signal怎么执行?
- 针对于多个inner join或者left join多条件查询的时候,各个inner join 的指向问题
- LEFT JOIN 和JOIN 多表连接
- Apache Ant运行时Unable to locate tools.jar解决方法
- UE4 Light Functions(光源函数)
- Cg shader with two passes using discard
- poj 2763 Housewife Wind 动态求树上两点之间距离
- BZOJ 2342([Shoi2011]双倍回文-manacher+set)
- 多个left join 怎么执行?
- MFC中CFileDialog打开和保存文件对话框
- u3d之sphere
- Unity3D 学习笔记1——序言(简称“废话”)
- 又学一招——反序列化出错
- HttpClient实现文件的上传下载
- 高仿知乎。大体框架已成
- UE3 Light Functions (光照函数)
- jquery checkbox 验证