Sql在WHERE子句中选择空值和非空值

问题描述:

我想运行一个查询,使用WHERE子句从表中选择值,查询只返回所有条件都有值的行,锄头我会去返回也是null的值?Sql在WHERE子句中选择空值和非空值

 Language Table       Students Table 
ID Language      ID  Student  LanguageID 
    1  English       1  Joe 
    2  Spanish       2  Mike   1 

运行查询,如

Select student.ID , Student.Student , Language.language 
FROM 
    Students, Language 
WHERE 
    student.LanguageID = Language.id 

的查询只返回单行学生迈克·我想返回即使语言设置为null,所有的学生。

你想是这样的:

select 
    student.id, student.student, language.language 
from 
    student left join language 
     on student.languageid = language.languageid 

看起来像你需要一个外部联接:http://en.wikipedia.org/wiki/Join_%28SQL%29#Outer_joins

WHERE student.LanguageID = Language.id或student.LanguageID IS NULL

你应该不要使用逗号语法来连接表。使用JOIN或在这种情况下,LEFT OUTER JOIN(这在几乎所有的DBMS可缩短至左连接)的ISO语法:

Select Student.Id, Student.Student. Language.Language 
From Students 
    Left Join Language 
     On Language.Id = Student.LanguageId 

这将返回所有的学生和他们的语言,如果他们有一个或NULL如果他们没有一个。