连接查询 on 和where
2016-02-15 15:40
363 查看
-- select p.pname,p.pcode,s.saletime,count(s.aid) as total from products as p
--
-- left join sales_detail as s on (s.pcode=p.pcode)
--
-- where s.saletime in ('2008-09-23','2008-09-24')
--
-- group by p.pcode order by total desc,p.pid asc
select p.pname,p.pcode,s.saletime,count(s.aid) as total from products as p
left join sales_detail as s on ((s.pcode=p.pcode) and s.saletime in ('2008-09-23','2008-09-24'))
group by p.pcode order by total desc,p.pid asc
对于JOIN参与的表的关联操作,如果需要不满足连接条件的行也在我们的查询范围内的话,我们就必需把连接条件放在ON后面,而不能放在WHERE后面,如果我们把连接条件放在了WHERE后面,那么所有的LEFT,RIGHT,等这些操作将不起任何作用,对于这种情况,它的效果就完全等同于INNER连接。对于那些不影响选择行的条件,放在ON或者WHERE后面就可以。
http://www.2cto.com/database/201111/112033.html
--
-- left join sales_detail as s on (s.pcode=p.pcode)
--
-- where s.saletime in ('2008-09-23','2008-09-24')
--
-- group by p.pcode order by total desc,p.pid asc
select p.pname,p.pcode,s.saletime,count(s.aid) as total from products as p
left join sales_detail as s on ((s.pcode=p.pcode) and s.saletime in ('2008-09-23','2008-09-24'))
group by p.pcode order by total desc,p.pid asc
对于JOIN参与的表的关联操作,如果需要不满足连接条件的行也在我们的查询范围内的话,我们就必需把连接条件放在ON后面,而不能放在WHERE后面,如果我们把连接条件放在了WHERE后面,那么所有的LEFT,RIGHT,等这些操作将不起任何作用,对于这种情况,它的效果就完全等同于INNER连接。对于那些不影响选择行的条件,放在ON或者WHERE后面就可以。
http://www.2cto.com/database/201111/112033.html
相关文章推荐
- Git学习笔记(几个常用的命令 及 版本回退)
- Android listview的item点击事件怎么失效了?
- (转)VIM 一键自动添加文件头注释
- Android Volley框架的使用(1)
- 欢迎使用CSDN-markdown编辑器
- UIScrollView基本用法和代理方法
- CoordinatorLayout与滚动的处理
- Activity、Task、应用和进程
- POJ 3216 Repairing Company(FLOYD+DAG最小路径覆盖)
- HTML Meta标签
- 今天简单说一下cdc 的使用
- Redis入门知识
- C++函数引用
- [学习笔记]将bootloader 和APP 合并成一个bin file升级演示
- 涨姿势!为什么有的颜色看起来非常高档?
- Eclipse导入Github上的Robotium源码进行代码分析的步骤
- fork和vfork区别
- QEvent原理
- 【 bzoj 2132 】GDOI圈地计划 - 最小割
- IOS开发证书显示“此证书的签发者无效”解决方法