人员课程表 table1name  course 
a    语文 
a    数学 
a    化学 
b    语文 
b    英语 
b    数据库 
c    语文   
c    数学
c    英语
c    物理
c    化学
c    数据库
课程表  course
id  course
1    语文
2    数学
3    英语
4    物理
5    化学
6    数据库求选择了全部课程的人
结果name  course
c    语文   
c    数学
c    英语
c    物理
c    化学
c    数据库

解决方案 »

  1.   

    SELECT NAME,COUNT(DISTINCT COURSE) FROM TB GROUP BY NAME HAVINT COUNT(DISTINCT COURSE)=(SELECT COUNT(course ) FROM COURSE )
      

  2.   

    select name,course from table1 where name in(
    select name from table1  group by name having(count(*)=6))
      

  3.   

    SELECT * 
    FROM TABLE1 
    WHERE NAME IN 
    (
    SELECT NAME 
    FROM TABLE1 
    GROUP BY NAME 
    HAVING COUNT(1) = (SELECT COUNT(1) FROM course))
      

  4.   


    SELECT * FROM table1 t WHERE (SELECT COUNT(*)FROM table1 WHERE NAME=t.NAME AND COURSE IN( select course from course))=6
      

  5.   

    SELECT * 
    FROM TABLE1 
    WHERE NAME IN 
    (
    SELECT NAME 
    FROM TABLE1 
    GROUP BY NAME 
    HAVING COUNT(1) = (SELECT COUNT(1) FROM course))
      

  6.   

    select a.name
    from student a
    join course b on a.course=b.course
    group by a.name
    having count(1)=(select count(*) from course)
      

  7.   

    DECLARE @table1 TABLE(name VARCHAR(10),  course NVARCHAR(10)) 
    INSERT @table1 SELECT 'a'    ,N'语文' 
    INSERT @table1 SELECT 'a'    ,N'数学' 
    INSERT @table1 SELECT 'a'    ,N'化学' 
    INSERT @table1 SELECT 'b'    ,N'语文' 
    INSERT @table1 SELECT 'b'    ,N'英语' 
    INSERT @table1 SELECT 'b'    ,N'数据库' 
    INSERT @table1 SELECT 'c'  ,  N'语文'  
    INSERT @table1 SELECT 'c'   , N'数学' 
    INSERT @table1 SELECT 'c' ,   N'英语' 
    INSERT @table1 SELECT 'c',    N'物理' 
    INSERT @table1 SELECT 'c',    N'化学' 
    INSERT @table1 SELECT 'c',    N'数据库' 
    DECLARE @course TABLE(id INT,course NVARCHAR(10))
    INSERT @course SELECT 1    ,N'语文' 
    INSERT @course SELECT 2    ,N'数学' 
    INSERT @course SELECT 3   , N'英语' 
    INSERT @course SELECT 4  ,  N'物理' 
    INSERT @course SELECT 5 ,   N'化学' 
    INSERT @course SELECT 6,    N'数据库' 
    SELECT A.NAME FROM (
    SELECT COUNT(*)CNT,[NAME] FROM @table1 GROUP BY [NAME])A
    ,(SELECT COUNT(*)CNT FROM @course)B WHERE A.CNT=B.CNT/*NAME
    ----------
    c
    */
      

  8.   

    一共几门,count distinct 等于几就是了撒
      

  9.   


    declare @student table([name] varchar(10),course varchar(10))
    insert @student
    select 'a','语文' union all 
    select 'a','数学' union all 
    select 'a','化学' union all 
    select 'b','语文' union all 
    select 'b','英语' union all 
    select 'b','数据库' union all
    select 'c','语文' union all 
    select 'c','数学' union all 
    select 'c','英语' union all 
    select 'c','物理' union all 
    select 'c','化学' union all 
    select 'c','数据库' declare @course table(id int,course varchar(10))
    insert @course
    select 1,'语文' union all
    select 2,'数学' union all
    select 3,'英语' union all
    select 4,'物理' union all
    select 5,'化学' union all
    select 6,'数据库'select a.* from @student a
    inner join
    (
    select b.name from
    (select name,count(course) num from @student group by name) b
    inner join
    (select max(id) id from @course) c on b.num=c.id) d
    on a.name=d.name
      

  10.   


    select name,course from @table1 where name in
    (
      select name from @table1  group by name having(count(name)=6)
    )
    应该像3楼一样,简单明了。
      

  11.   


    DECLARE @table1 TABLE(name VARCHAR(10),  course NVARCHAR(10)) 
    INSERT @table1 SELECT 'a'    ,'语文' 
    INSERT @table1 SELECT 'a'    ,'数学' 
    INSERT @table1 SELECT 'a'    ,'化学' 
    INSERT @table1 SELECT 'b'    ,'语文' 
    INSERT @table1 SELECT 'b'    ,'英语' 
    INSERT @table1 SELECT 'b'    ,'数据库' 
    INSERT @table1 SELECT 'c'  ,  '语文'  
    INSERT @table1 SELECT 'c'   , '数学' 
    INSERT @table1 SELECT 'c' ,   '英语' 
    INSERT @table1 SELECT 'c',    '物理' 
    INSERT @table1 SELECT 'c',    '化学' 
    INSERT @table1 SELECT 'c',    '数据库' DECLARE @course TABLE(id INT,course NVARCHAR(10))
    INSERT @course SELECT 1,'语文' 
    INSERT @course SELECT 2,'数学' 
    INSERT @course SELECT 3,'英语' 
    INSERT @course SELECT 4,'物理' 
    INSERT @course SELECT 5,'化学' 
    INSERT @course SELECT 6,'数据库' SELECT * FROM @table1 
    WHERE name IN (SELECT name FROM @table1
    GROUP BY name
    HAVING(count(*))=(SELECT count(*) FROM @course))