原csdn地址https://blog.csdn.net/|

蜗牛使劲冲

园龄:7年6个月粉丝:3关注:10

深入理解一段长的sql语句

经过前段时间搞报表项目自己写sql的能力大大提升,下面这段是自己写的分析一下

select id as teacher_id,sum(leave_time) as total_leave_time from (
	select ui.id,l.uid,(endtime-starttime) as leave_time From bk_leave AS l
	LEFT JOIN bk_user_info AS ui ON l.uid = ui.uid
	WHERE ui.id IN (' . join(',', $teacherIds) . ')
	AND l.starttime >= :startAt
	AND l.endtime >= :endAt
)as leave_time GROUP BY uid';

首先是两个select,我们应该先看里面的,里面是一个联表查询,其中也结合了一个计算
(endtime-starttime) as leave_time,这样这个子查询其实就是先找到我想要的数据,然后
再在外头用个select去找查出来的数据,把查出来的数据看作是一张表,同时就对这个表
进行了sum(leave_time)的操作,所以感觉写复杂的sql其实就是慢,稳,整理好思绪就好了。

本文作者:蜗牛使劲冲

本文链接:https://www.cnblogs.com/warrenwt/p/18074571

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   蜗牛使劲冲  阅读(2)  评论(0编辑  收藏  举报  
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起