多表相连时求出正确的COUNT
来源:互联网 发布:cf一键领取软件 编辑:程序博客网 时间:2024/04/28 19:15
在MySQl中,假设有两个数据表Employee(E,雇员表)、Recorde(R,考勤表),以E.id=R.eid相连。现在要找出本月迟到超过三次的员工有多少人。
可能首先想到的SQL语句象这样:
select count(*) from Employee E,Recorde R where E.id=R.eid and ...(本月迟到超过三次)
但是得到的数据可能是错误的
修改为类似这样:
select count(E.id) from Employee E left join Recorde R on E.id=R.eid where ...(本月迟到超过三次)
是和上面的数据一模一样,我还是认为你可能错了
为什么我一口咬定你两次可能错了?你把 count(*) , count(E.id) 之类换成 * 试试看,找出的数据也许比上面的求出的得数少吧?
问题在于可能有些雇员本月没有考勤记录,难道不会有一个月的长假或者出差?
正确的做法是用 count(DISTINCT E.id)
如下:
select count(DISTINCT E.id) from Employee E,Recorde R where E.id=R.eid and ...(本月迟到超过三次)
- 多表相连时求出正确的COUNT
- 多表相连(inner)
- MongoDB count()的正确用法
- MongoDB count()的正确用法
- 求出栈顺序是否正确
- 相连的农场题解
- 题目:相连的农场
- 两个相连的div
- 相连的农场
- 1003. 相连的1
- 1003. 相连的1
- 【1003】相连的1
- 1003.相连的1
- 1003.相连的1
- 1003. 相连的1
- 1003. 相连的1
- java 编译时对于字符串用+号相连的处理
- udp客户端与服务端相连时,握手情况的处理
- [转] 香港流行乐坛三十年
- 分享经验,让更多的人受益
- PInvoke
- 软件开发的隐喻
- Consuming Unmanaged C++ Class Libraries from .NET Clients
- 多表相连时求出正确的COUNT
- 人活着是为什么啊?
- 刚注册CSDN一个多星期,等级已经三角了
- 我们自杀吧!(贴图)_8:卧轨
- (转)FTP的协议命令字和标准FTP信息
- WinCE下隐藏系统任务栏的方法
- VC开发ActiveX控件指引
- uclinux-2008R1-RC8(bf561)到VDSP5的移植(50):jiffies_64的定义问题
- C语言程序设计(第一节课讲稿)