sql选择除null之外的所有内容

时间:2011-07-12 11:40:46

标签: sql sql-server

我想从两个表中获取值,如下例所示:

假设我们有两个表:

TableA(带有表b的链接):

Id | Id_TableB | Name
---------------------
1  |   1       |  Ralf
2  |   NULL    | Marta

表B:

Id |  Color
---------------------
1  |  Blue
2  |  Red

如果有链接,我想获取Color的值,否则为NULL:

结果:

Id |   Name | Color
-----------------------------
1  |    Ralf| Blue
2  |   Marta| NULL

关于如何解决这个问题的任何想法?

4 个答案:

答案 0 :(得分:5)

您需要left outer join

SELECT t1.Id, t1.Name, t2.Color 
from TableA t1 left outer join TableB t2 
on t1.Id_TableB = t2.Id;

请检查我上面提供的链接。它是一个简化的教程

答案 1 :(得分:1)

您需要使用LEFT OUTER JOIN,即使存在NULL,也包括行。像这样:

SELECT * 
FROM   TableA a
LEFT OUTER JOIN TableB b on a.ID_TableB = b.ID

更多信息:

http://msdn.microsoft.com/en-us/library/ms187518.aspx

希望这有帮助,

约翰

答案 2 :(得分:1)

select
    a.Id,
    a.Name,
    b.Color
from
    a
    left outer join
        b
    on
        a.Id_TableB = b.Id
group by
    b.Id

如果你有一对多的关系a-> b,那么group by b.Id是必要的。

答案 3 :(得分:-1)

只需要使用外连接....

select a.id,a.Name, b.Color from tableB as b 
   left join tableA as a on b.Id = a.id_tableB

为此您也可以在条件中使用 你可以尝试下面的查询 -

select a.id,a.Name, b.Color from tableB as b,tableA as a on b.Id(+) = a.id_tableB