在两个表上进行一次选择,其中包含 NULL 而不是 null
Posted
技术标签:
【中文标题】在两个表上进行一次选择,其中包含 NULL 而不是 null【英文标题】:One select on two tables with NULL and not null 【发布时间】:2013-06-21 13:13:22 【问题描述】:我尝试从两个表中选择并使用 WHERE 将一些数据从一个表中放到另一个表中 (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 行。
我在哪里犯错了?
【问题讨论】:
【参考方案1】:您必须使用left join
,如下所示
select ID
,NAME
,COLOR
,COMPANY_SHORT_NR
from table1 t1
left join table2 T2 on t1.COMPANY_SHORT_NR = t2.SHORT
【讨论】:
很高兴能为您提供帮助。【参考方案2】:你需要 OUTER JOIN
select ID
,NAME
,COLOR
,COMPANY_SHORT_NR
from table1
LEFT OUTER JOIN table2 ON ( COMPANY_SHORT_NR = SHORT )
【讨论】:
【参考方案3】:加入表格不是更好吗?喜欢SELECT ID, NAME, COLOR, COMPANY_SHORT_NR FROM table1 t1 LEFT JOIN table2 t2 on t2.SHORT = t1.COMPANY_SHORT_NR WHERE 1
【讨论】:
以上是关于在两个表上进行一次选择,其中包含 NULL 而不是 null的主要内容,如果未能解决你的问题,请参考以下文章