一个选择两个表为NULL而不是null

时间:2013-06-21 13:13:23

标签: sql oracle select plsql isnull

我尝试从两个表中进行选择,并将一些数据从一个表中添加到另一个表中 (PL / SQL)

我有两张桌子:

表1

ID  NAME  COLOR  COMPANY_SHORT_NR
1   a     Green  1
2   b     Red    23
3   c     Blue   null
4   a     Green  null
5   g     Green  1

表2

ID  SHORT COMP_NAME
1   1     company_name_1 
2   23    comapny_name_2

现在我想从表1中获取公司名称的所有数据,如果它的null获取信息则为null

1   a     Green  company_name_1 
2   b     Red    comapny_name_2 
3   c     Blue   null
4   a     Green  null
5   g     Green  company_name_1 

我试过这样做:

select ID
      ,NAME
      ,COLOR
      ,COMPANY_SHORT_NR
from table1
    ,table2
where COMPANY_SHORT_NR = SHORT 

但是这只给我不是空值:

1   a     Green  company_name_1 
2   b     Red    comapny_name_2 
5   g     Green  company_name_1 

如果我使用这样的话:

select ID
      ,NAME
      ,COLOR
      ,COMPANY_SHORT_NR
from table1
    ,table2
where COMPANY_SHORT_NR = SHORT or COMPANY_SHORT_NR is null

我得到记录...... 如果我只使用IS NULL,那么它只返回2行。

我犯错误的地方?

3 个答案:

答案 0 :(得分:4)

您必须使用left join,如下所示

select ID
      ,NAME
      ,COLOR
      ,COMPANY_SHORT_NR
from table1 t1
left join table2 T2 on t1.COMPANY_SHORT_NR = t2.SHORT 

答案 1 :(得分:1)

你已经加入了

select ID
      ,NAME
      ,COLOR
      ,COMPANY_SHORT_NR
from table1
     LEFT OUTER JOIN table2 ON ( COMPANY_SHORT_NR = SHORT )

答案 2 :(得分:0)

加入桌子不是更好吗?比如SELECT ID, NAME, COLOR, COMPANY_SHORT_NR FROM table1 t1 LEFT JOIN table2 t2 on t2.SHORT = t1.COMPANY_SHORT_NR WHERE 1