2010-06-27 73 views
3

我想運行一個查詢,使用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,所有的學生。

回答

4

你想是這樣的:

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

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

3

你應該不要使用逗號語法來連接表。使用JOIN或在這種情況下,LEFT OUTER JOIN(這在幾乎所有的DBMS可縮短至左連接)的ISO語法:

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

這將返回所有的學生和他們的語言,如果他們有一個或NULL如果他們沒有一個。