深入理解一段长的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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步