使用group by和count in语句实现find contains many的另一种做法

接上一篇文章一个实现类似find contains many(many in many)的sql 语句,原文使用了group by,另外使用了子句的count case when来做条件的过滤。经过笔者的再三实践,发现了另一种做法,即直接在子查询中使用count语句和in的组合来实现这种操作。

原要求:查询即有名字叫张三,也有名字叫李四的班的名字。
翻译为:查询班信息,其中要求学生名字中存在张三,李四的名字的人数至少大于等于2。(不考虑名字重复)

根据这个实现,以下即为完整的sql语句,能够完美地实现这个操作:

select * from class t where (select count(1) from student where classid = t.id and name in (张三,李四)) >= 2

这种做法,即是直接在谓语上使用count语句,并对count子句做过滤操作。
本实现暂未考虑效率问题,不知道和上一篇文章,哪个效率更好一些。

转载请标明出处:i flym
本文地址:https://www.iflym.com/index.php/datastructure/201203080001.html

相关文章:

作者: flym

I am flym,the master of the site:)

发表评论

邮箱地址不会被公开。 必填项已用*标注