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

时间:2016-05-06 11:37:52

标签: sql

我有三张桌子:

  1. 课程
  2. 主题
  3. 问题
  4. 我的查询:

    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,我得到null结果。

    但是我希望结果尽管"Question"表是NULL。

    提前致谢。

1 个答案:

答案 0 :(得分:4)

您没有收到“NULL”结果。您将获得结果集。 NULL是单个列中的值。

如果是这种情况,那么您需要left join。这看起来像是:

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子句。这是必需的 - 否则WHERE会过滤掉不匹配的行。