mysql – 如何在不使用子查询的情况下选择具有条件的不同记录
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 如何在不使用子查询的情况下选择具有条件的不同记录,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1068字,纯文字阅读大概需要2分钟。
内容图文
我有一个包含以下架构的表
(Id(int PK),EmployeeId(int),DepartmentId(int),IsSelfAccessToDepartment(bit))
此表可以包含以下条目
(1,101,21,1)
(2,101,22,0)
(3,102,21,1)
(4,103,21,1)
(5,103,22,0)
我想只检索那些IsSelfAccessToDepartment = 1的员工ID,即如果同一员工Id有另一个条目,其中IsSelfAccessToDepartment = 0,在这种情况下不应检索此行.
问题是我想在不使用任何子查询和连接的情况下检索此信息,因为它会产生性能问题,因为此表将包含数百万个条目.
解决方法:
应使用最小功能过滤掉所有输入0的员工.
还应利用最大函数将条目限制为不高于1.
SELECT employeeID, MIN(IsSelfAccessToDepartment) FROM test2 GROUP BY employeeID
HAVING MIN(isSelfAccessToDepartment) = 1;
最后:
>计数不是必需的,因为这不是OP要求的要求
>如果IsSelfAccessToDepartment不是一点,可以添加代码AND MAX(isSelfAccessToDepartment)= 1.但是,由于它有点,两个可用值为零和一(感谢@Caius在评论中的这一点).
此外,还有其他创造性的解决方案(但效率低下),例如:
SELECT employeeID FROM test2 GROUP BY employeeID
HAVING SUM(isSelfAccessToDepartment) = COUNT(isSelfAccessToDepartment);
这假设isSelfAccessToDepartment可以是零或1.如果不存在零条目,则总和将与计数相同.
内容总结
以上是互联网集市为您收集整理的mysql – 如何在不使用子查询的情况下选择具有条件的不同记录全部内容,希望文章能够帮你解决mysql – 如何在不使用子查询的情况下选择具有条件的不同记录所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。