Sql在WHERE子句中选择null和non null值

时间:2010-06-27 13:49:32

标签: where-clause sql

我正在尝试运行一个使用WHERE子句从表中选择值的查询,查询只返回所有条件都有值的行,我是否还要返回同样为null的值?

     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 

查询只为学生麦克风返回一行我想要返回所有学生,即使语言设置为空。

4 个答案:

答案 0 :(得分:4)

你想要这样的东西:

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

答案 1 :(得分:3)

您不应使用逗号语法来连接表。使用JOIN的ISO语法,或者在这种情况下使用LEFT OUTER JOIN(几乎所有DBMS都可以缩短为Left Join):

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

这将返回所有学生及其语言(如果他们有一个)或null,如果他们没有。

答案 2 :(得分:1)

答案 3 :(得分:1)

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