班级表
ID  班级名称 
1   高一1班
2   高一2班
3   高二1班
学生表
ID  学生姓名 班级ID
1   张三      1,3
2   李四      2,3一个班级可以对应多个学生,一个学生也可以加入多个班级,比如我要查询高二2班里面有多少学生,请问我要怎么SQL要怎么写?

解决方案 »

  1.   

    Select count(*)
    From 班级表 a inner join 学生表 b on INSTR(','&b.班级ID&',',','&a.ID&',')>0
    Where 班级名称='高二2班'
      

  2.   

    Select count(*)
    From 班级表 a , 学生表 b 
    Where a.班级名称='高二2班'
    and INSTR(','&b.班级ID&',',','&a.ID&',')>0
    或者
    Select count(*)
    From 班级表 a , 学生表 b 
    Where a.班级名称='高二2班'
    and ','&b.班级ID&',' like '%,'&a.ID&',%'
      

  3.   

    好像也不行,假如班级ID是13和班级ID 3,这样搜索出来就不准确了
      

  4.   

    select count(*) from sd_tb where class_id in (
    select class_id from class_tb where class_name='高二2班'
    )
      

  5.   

    Select count(*)
    From 班级表 a inner join 学生表 b on find_in_set(a.ID,b.班级ID)
    Where 班级名称='高二2班'
      

  6.   

    用INSTR进行准确查找要前后加逗号,用FIND_IN_SET可以直接进行准确查找
    Select count(a.id) From 班级表 a inner join 学生表 b on find_in_set(a.ID,b.班级ID)
    Where 班级名称='高二2班'