如何用GROUP BY写SQL查询语句

日期: 2008-09-22 作者:Rudy Limeback翻译:April 来源:TechTarget中国 英文

问:我有一个如下的表(该表有两列): std_id  skill        1    Java        1    J2EE        1    Struts       &nb……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

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

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

问:我有一个如下的表(该表有两列):


std_id  skill
       1    Java
       1    J2EE
       1    Struts
       2    Java
       2    J2EE
       3    Java
       3    J2EE
       3    Struts

 现在我想重新获取那些拥有三种技能的学生的student IDs(student IDs):Java、J2EE、Struts。每名学生必须拥有上述所有的技能,也就是说我的答案应该如下所示:

std_id 
       1   
       3   

  我该如何写这个查询语句?


  答:你要找的就是在技能表中有三行的学生。这就需要对许多行进行分析,也就是说,每名学生对应一些skill row。我建议你用GROUP BY来解决这个问题。


select std_id 
      FROM skills
     where skill IN (’Java’,’J2EE’,’Struts’)
    GROUP
        BY std_id
    HAVING count(*) = 3

  where子句确保了每名学生只有再这三个skill row才能被获取。GROUP BY和HAVING子句保证我们能查找出这三行。

  你如何修改这个解决方案,比方说找出至少拥有这三项技术中两项技术的学生?

翻译

April
April

相关推荐