当前位置:  开发笔记 > 后端 > 正文

你会如何解决这个棘手的SQL问题?

如何解决《你会如何解决这个棘手的SQL问题?》经验,为你挑选了1个好方法。

假设您有一个如下所示的表格布局:

couses:

id (INT), 
courseName (VARCHAR)

导师:

id (INT),
courseId(INT),
instructor(VARCHAR)

创建一个将打印所有课程的查询,如果有一个教师,则显示他们的名字,如果有两个教师,则按排序顺序在行上打印他们的名字,如果有两个以上的教师而不是教师姓名显示"委员会".

例如,您的输出看起来像这样

    courseId    instructor1        instructor2 
    0           Edward Yourdon  
    1           Edward Dijkstra    Nicholas Wirth 
    2           Comittee    

注:摘自TheDailyWtf的调查问卷.不是作业问题.



1> Tom Ritter..:

是的,是的,商业逻辑等.这是一个游戏,而不是你老板要求你这样做.

在T-SQL中:

 select
    id
     , courseName
     , case (select count(*) from instructors i where i.courseid=c.courseid)
         when 0 then 'No Instructor'
         when 1 then (select top 1 instructor from instructors where i.courseid=c.courseid)
         when 2 then (select top 1 instructor from instructors where i.courseid=c.courseid order by instructor desc)
         else 'Committee'
         end as instructor_1
     , case (select count(*) from instructors i where i.courseid=c.courseid)
         when 2 then (select top 1 instructor from instructors where i.courseid=c.courseid order by instructor asc)
         else ''
         end as instructor_2
 from courses c

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有