Mysql 用于查找计数的嵌套sql查询
我有两张桌子Mysql 用于查找计数的嵌套sql查询,mysql,sql,Mysql,Sql,我有两张桌子 数据为rollno、batchids的学生表 批次ID为courseid的批次表 students表的BatchId列包含学生可能注册的各种课程的以逗号分隔的BatchId。现在我想知道课程中的学生人数。有人能帮我吗 到目前为止,我已达到 select * from students where batchids in (select id from batches where courseid=1) 这给了我一个id为“1”的课程学生列表。使用count() 如果我正确理解
select *
from students
where batchids in (select id from batches where courseid=1)
这给了我一个id为“1”的课程学生列表。使用count()
如果我正确理解了您的数据,则您有如下情况: 学生:(s1,‘1,2,3’) BatchId:('1,2,3',1),('1,2,3',2),'1,2,3',3) 假设这是正确的,逗号分隔的列表只是batchids表中的一个键。因此,要获得每个课程的计数,请执行一个联接:
select courseid, count(*)
from batches b join
students s
on b.studentid = s.studentid
group by courseid
student表中以逗号分隔的BatchId列表,这会使事情复杂化。courseid=1的相关性是什么?您使用的是哪些RDBMS-SQLServer、MySQL…?在继续之前,您应该修复您的数据模型。“以逗号分隔的BatchID列表”是一个非常糟糕的主意。请编辑以回答您的查询。
select courseid, count(*)
from batches b join
students s
on b.studentid = s.studentid
group by courseid