【mysql】left join on and 和 where的区别
2013-06-24 18:35
477 查看
left join on and
SELECT a.order_id ,b.id FROM way_order a LEFT JOIN way_order_product b ON a.order_id=b.order_id AND b.order_id >70
返回a表中所有数据和符合and条件的b数据
179 (NULL)
180 (NULL)
183 (NULL)
220 8
224 9
SELECT a.order_id ,b.id FROM way_order a inner JOIN way_order_product b ON a.order_id=b.order_id AND b.order_id >70
SELECT a.order_id ,b.id FROM way_order a LEFT JOIN way_order_product b ON a.order_id=b.order_id where b.order_id >70
220 8
224 9
and后条件在 inner join起作用相当于 把条件放在where后
SELECT a.* ,b.id,b.order_id FROM way_order a INNER JOIN way_order_team b ON a.order_id=b.order_id WHERE b.order_id >70
SELECT a.* ,b.id,b.order_id FROM way_order a INNER JOIN way_order_team b ON a.order_id=b.order_id and b.order_id >70
上面两个sql基本等价
EXPLAIN SELECT a.* ,b.id,b.order_id FROM way_order a left JOIN way_order_team b ON a.order_id=b.order_id WHERE b.order_id >70
EXPLAIN SELECT a.* ,b.id,b.order_id FROM way_order a left JOIN way_order_team b ON a.order_id=b.order_id and a.order_id >70
EXPLAIN SELECT a.* ,b.id,b.order_id FROM way_order a left JOIN way_order_team b ON a.order_id=b.order_id where a.order_id >70
EXPLAIN SELECT a.* ,b.id,b.order_id FROM way_order a left JOIN way_order_team b ON a.order_id=b.order_id and b.order_id >70
却有区别
SELECT a.order_id ,b.id FROM way_order a LEFT JOIN way_order_product b ON a.order_id=b.order_id AND b.order_id >70
返回a表中所有数据和符合and条件的b数据
179 (NULL)
180 (NULL)
183 (NULL)
220 8
224 9
SELECT a.order_id ,b.id FROM way_order a inner JOIN way_order_product b ON a.order_id=b.order_id AND b.order_id >70
SELECT a.order_id ,b.id FROM way_order a LEFT JOIN way_order_product b ON a.order_id=b.order_id where b.order_id >70
220 8
224 9
and后条件在 inner join起作用相当于 把条件放在where后
SELECT a.* ,b.id,b.order_id FROM way_order a INNER JOIN way_order_team b ON a.order_id=b.order_id WHERE b.order_id >70
SELECT a.* ,b.id,b.order_id FROM way_order a INNER JOIN way_order_team b ON a.order_id=b.order_id and b.order_id >70
上面两个sql基本等价
EXPLAIN SELECT a.* ,b.id,b.order_id FROM way_order a left JOIN way_order_team b ON a.order_id=b.order_id WHERE b.order_id >70
EXPLAIN SELECT a.* ,b.id,b.order_id FROM way_order a left JOIN way_order_team b ON a.order_id=b.order_id and a.order_id >70
EXPLAIN SELECT a.* ,b.id,b.order_id FROM way_order a left JOIN way_order_team b ON a.order_id=b.order_id where a.order_id >70
EXPLAIN SELECT a.* ,b.id,b.order_id FROM way_order a left JOIN way_order_team b ON a.order_id=b.order_id and b.order_id >70
却有区别
相关文章推荐
- left join on and 与 left join on where的区别
- left join on and 与 left join on where的区别
- left join on and 与 left join on where的区别
- left join on and与left join on where的区别
- mysql中left join on后面and和where条件查询的差异
- Mysql关于join on where(and)的区别
- left join on and与left join on where的区别
- 转!!left join on and 与 left join on where的区别
- left join on and 与 left join on where 的区别
- left join on and与left join on where的区别
- left join on and与left join on where的区别
- 左连接 A left join B on A.a = B.a and/where的区别
- MYSQL join..on 后的and 和where的区别
- 关于数据库中使用 left join on ...and ...和 left join on ....where ...区别,和使用group by 要注意的情况
- left join on and 与 left join on where的区别
- left join on and 与 left join on where的区别
- MySQL多表联合查询之--and 放在 left join on 后 与 放在 where 后的区别
- left join on and 与 left join on where的区别
- [转载]SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别
- left join on and 与 left join on where的区别