dsg435665475 2016-04-20 09:37
浏览 53
已采纳

如果列不存在,请加入两个表并在列中显示null

I have two tables as follows.

stages:

stageid     stagename     is_corrected
   1           abc              1
   2           xyz              1
   3           aaa              0
   4           bbb              1

responses:

stageid     teamid      diffscore      
   1           1            10
   1           2            12
   1           3            15
   2           1            12
   2           2            13
   2           3            16
   2           4            14

I am trying to join them and show a joined table where is_corrected = 1. Here is the query I tried:

Query:

SELECT 
    t1.stagename, 
    t2.diffscore 
FROM 
    stages t1 
    LEFT OUTER JOIN (
        SELECT 
            diffscore, 
            teamid, 
            stageid 
        FROM 
            responses as t2
    ) as t2 ON t2.stageid = t1.stageid 
    OR t1.stageid = NULL 
WHERE 
    t1.is_corrected = 1 
    AND (
        t2.teamid = 4 
        OR t2.teamid = NULL
    )

Expected Result:

stagename      diffscore
   abc            NULL
   xyz            14
   bbb            NULL

Output:

stagename      diffscore
   xyz            14
  • 写回答

2条回答 默认 最新

  • douji6667 2016-04-20 10:17
    关注

    Try this:

    SELECT 
        s.stageid, 
        s.stagename, 
        IFNULL(
            (
                SELECT 
                    diffscore 
                FROM 
                    responses 
                WHERE 
                    s.stageid = stageid 
                    AND (
                        teamid = 1
                        OR teamid IS NULL
                    )
                LIMIT 1
            ), 
            0
        ) AS diffscore 
    FROM 
        stages s 
    WHERE 
        is_corrected = 1
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启