【笔记】SQL点滴 2017-08-21
来源:互联网 发布:jpa mysql dialect 编辑:程序博客网 时间:2024/06/03 18:55
- 每次记录SQL的点滴
- 数据
- 想要得到的数据在5月份这个时间段的访问次数
- 写完的SQL结构
- 我遇到的问题
每次记录SQL的点滴
项目中遇到SQL, 尤其是跟分组有关, 或者count, sum相关, 写的不是很好.有时间就记录点吧, 没时间就算了..
例如有一个关于统计的需求,要求主表不管有无从表的统计数据,都要显示出来:
数据
用户列
来自主表, 其他两列
均来自从表, 两者之间通过用户id
进行关联
想要得到的数据(在5月份这个时间段的访问次数):
写完的SQL结构
SELECT 用户名, count(统计某字段) 访问次数 FROM ( -- 子查询1(查询某些条件的用户表) -- 当然实际业务要复杂的多, 可能是多表关联出来的结果集) t1-- t1 相当于一张表, 不管里面的查询关联了多少表LEFT JOIN ( -- 子查询2(查询某些条件的另一张表) WHERE time = 5月份) t2 ON t1.id = t2.id -- t2 是从表, 数据的主要来源记录GROUP BY t1.id
我遇到的问题
- 如果LEFT JOIN t2 , 不通过子查询会怎么样?
SELECT 用户名, count(统计某字段) 访问次数 FROM ( -- 子查询1(查询某些条件的用户表)) t1LEFT JOIN t2表名 ON t1.id = t2.id WHERE time = 5月份GROUP BY t1.id
最开始我是这样写的, 但是出现的数据会变成这样:
发现用户2, 用户3 不见了….
原因: 关联表时 , 没有用子查询, 那么关联的所有访问记录的数据, 但是如果现在需要查某个时间段的数据, 再最后面肯定会用WHERE time = 5月份
这样的语句, 导致用户2, 因为它存在访问记录, 但是时间在3月份, 这样它会直接被筛掉, 包括用户3, 它甚至不存在访问记录, 更会被筛掉.
阅读全文
0 0
- 【笔记】SQL点滴 2017-08-21
- Sql 点滴
- sql点滴
- SQL 点滴
- 点滴笔记
- SQL操作点滴
- sql 92语法点滴
- SQL语句技巧点滴
- 关于SQL知识点滴
- sql优化点点滴
- sql 注入防止点滴
- db2 sql点滴
- SQL点滴文章总结
- sql server 点滴累计
- SQL学习点滴。
- sql的点滴用法
- sql用法的点滴
- SQL语句分析点滴
- 使用JSP、EL表达式获取相对路径
- _IO, _IOR, _IOW, _IOWR 宏的用法与解析
- spring 事件驱动模型
- Android Studio代码混淆添加
- 精炼 Spring MVC 教程(一)「框架初体验」
- 【笔记】SQL点滴 2017-08-21
- Maven 实战学习
- 【宽搜】poj 1101 The Game
- 循环神经网络(rnn)的时间序列预测
- Linux下安装redmine
- easyUI 小技巧 easyui-combobox控件
- allegro 倒圆角
- 用API获取IP地址
- Statement、PreparedStatement和CallableStatement 的区别 -- JAVA 数据库