SQL注册上限

时间:2013-05-10 17:30:30

标签: sql

我正在尝试根据在第二张桌子上每个班级注册的学生数量来显示表格中的数据。 例如:

表1:

ClassID:  SLN:   Capacity:
1         ABCD       4
2         EFGH       20
3         IJKL       25
4         MNOP       20
5         QRST       25 
6         UVWX       25

表2:

StudentID:   Class:    
1             ABCD  
3             DCAB   
2             ABCD  
4             ABCD  
5             ABCD
6             EFGH

所以我想要的输出是:

ClassID:  SLN:   Capacity:
2         EFGH       20
3         IJKL       25
4         MNOP       20
5         QRST       25
6         UVWX       25

所以类可以出现在一个表中但不能出现在另一个表中。我不希望表2中的类不在表1中,但我确实需要表1中的类而不是表2.我也不希望显示完整的类。 感谢

1 个答案:

答案 0 :(得分:1)

如果我理解您的要求是正确的,我认为您可以使用以下内容:

select t1.classid, t1.sln, t1.capacity
from table1 t1
where not exists (select 1  -- classes not in table2
                  from table2 t2
                  where t1.sln = t2.class)
  or t1.capacity > (select count(*)  -- classes where capacity not met
                    from table2 t2
                    where t1.sln = t2.class
                    group by class);

请参阅SQL Fiddle with Demo