Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL查询中获取NULL作为结果_Sql - Fatal编程技术网

在SQL查询中获取NULL作为结果

在SQL查询中获取NULL作为结果,sql,Sql,我有三张桌子: 教训 主题 问题: 我的问题是: SELECT LE.LessonId, LE.LessonName, SUB.SubjectName, QU.QuestionId, QU.QuestionName FROM Lesson LE INNER JOIN Subject SUB ON SUB.LessonId = LE.LessonId INNER JOIN Question QU ON QU.LessonId = LE.

我有三张桌子:

  • 教训
  • 主题
  • 问题:
  • 我的问题是:

    SELECT    
        LE.LessonId, LE.LessonName,
        SUB.SubjectName,
        QU.QuestionId, QU.QuestionName
    FROM 
        Lesson LE
    INNER JOIN 
        Subject SUB ON SUB.LessonId = LE.LessonId
    INNER JOIN 
        Question QU ON QU.LessonId = LE.LessonId
    WHERE 
        LE.LessonPageId = 1552
        AND SUB.IsActive = 1
        AND QU.IsActive = 1
    
    由于
    “问题”
    表为空,因此我得到的结果为空

    但是,尽管
    “Question”
    表为空,我还是希望得到结果

    提前感谢。

    您不会得到“空”结果。您将得到一个空的结果集
    NULL
    是单个列中的值

    如果是这种情况,那么您需要
    左连接
    。这看起来像:

    SELECT LE.LessonId, LE.LessonName, SUB.SubjectName,
           QU.QuestionId, QU.QuestionName
    FROM Lesson LE LEFT JOIN
         Subject SUB
         ON SUB.LessonId = LE.LessonId AND SUB.IsActive = 1 LEFT JOIN
         Question QU
         ON QU.LessonId = LE.LessonId AND QU.IsActive = 1
    WHERE LE.LessonPageId = 1552;
    
    一些评论

    当您使用
    LEFT JOIN
    时,您几乎应该将其用于所有连接(这并非总是正确的,但这是一个很好的指导)。
    LEFT JOIN
    保留第一个表中的所有行,即使
    ON
    条件会过滤结果


    还要注意,
    WHERE
    子句中的两个条件被移动到
    ON
    子句中。这是必需的,否则
    中的
    将过滤掉不匹配的行。

    非常感谢您,您的指导真的很有必要。