php - 连接两个表,如果列不存在,则在列中显示 null

标签 php mysql

我有两个表,如下。

阶段:

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

回复:

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

我正在尝试连接它们并显示一个连接表,其中 is_ Corrected = 1。这是我尝试的查询:

查询:

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
    )

预期结果:

stagename      diffscore
   abc            NULL
   xyz            14
   bbb            NULL

输出:

stagename      diffscore
   xyz            14

最佳答案

试试这个:

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

关于php - 连接两个表,如果列不存在,则在列中显示 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36739698/

相关文章:

php - 在 sql 中使用查询重置表

类中的PHP方法不从数据库返回数据

php - SELECT * FROM (表名) WHERE (数组值) = '1'

java - PHP 在 Java 中的解包方法功能

php - 从分层的belongsToMany关系返回所有数据Laravel 5.3

java - MySql连接重用用于不同的请求

php - 静态关键字在 PHP 生成器函数中不起作用

php - 获取数据库中的日期时间并将其显示在 Dreamweaver 中的 3 个单独字段中 [年、月、日]

MYSQL CONV 从十六进制到十进制的问题

amazon-ec2 - 尝试将本地 mysql 服务器迁移到 AWS