暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql题目实战

111
  • 题目描述:查询选了01课程的学生情况,02课程可以不存在的情况,如果02课程存在则显示,如果02课程不存在则显示为null

  • 思路1:

    • 这样显示的话,会导致把所有课程都显示,但如果用户没有选择课程02,会把其他课程结果展示出来

    select sc1.sid,sc1.cid,sc1.score,sc.CID,sc.score
    from (select * from sc where sc.cid = '01') sc1
    left join sc on sc1.sid = sc.sid;

    • 思路2:

      • 在思路1的基础上增加限制条件的话,会导致只会展示选了课程01 和课程02的学生成绩

      select sc1.sid,sc1.cid,sc1.score,sc.CID,sc.score
      from (select * from sc where sc.cid = '01') sc1
      left join sc on sc1.sid = sc.sid
      where sc.cid = '02';

      • 思路3

        select sc1.sid,sc1.cid,sc1.score,
        -- 如果sc.cid = 02 则显示sc.cid,否则不显示
        case sc.cid
        when '02' then sc.cid
        else ''
        end as 'cid',
        -- 如果sc.cid = 02 ,则显示sc.score,否则显示null,最后把列命名为score
        case
        when sc.cid = '02' then sc.score
        else null
        end as 'score'
        from (select * from sc where sc.cid = '01') sc1
        left join sc on sc1.sid = sc.sid;


        文章转载自梁霖编程工具库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论