我有三张桌子:
我的查询:
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。
提前致谢。
答案 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
会过滤掉不匹配的行。