从一个表中选择列,在另一个表中为NULL

时间:2015-01-25 00:13:26

标签: sql database oracle

我试图从表中列出数据,其中未输入另一个表中的等效数据。有点罗嗦解释,但我正在尝试做的事情如下:

我真的很难将数据拉到房间里不存在的地方,感谢任何帮助。

谢谢!

E:

SELECT
    COUNT(a.x) AS p,
    COUNT(a.x) AS q,
FROM 
    x
LEFT JOIN b ON a.x= b.x
WHERE b.xis NULL;

2 个答案:

答案 0 :(得分:2)

select h.*
from hotel as h
left join room as r
on h.number = r.hotelnumber
where r.hotelnumber is null

答案 1 :(得分:1)

虽然Santhosh发布了一个很好的解决方案,但我想宣传EXISITS,因为它更具惯用性。查询应该读给一个新的开发人员,比如描述你想要做什么的句子(如果可能的话)。

oracle优化器似乎在大查询中与EXISTS一起工作非常好(我不能引用确切的来源,只是来自asktom或类似网站上的许多查询,EXISTS似乎在类似语句可能失败的许多情况下进行优化在一个大问题里......)

SELECT * FROM hotel h
WHERE NOT EXISTS
( SELECT * FROM room r
  WHERE r.hotelnumber = h.number
)

阅读:给我所有的酒店,没有房间有酒店号码。 - >给我所有没有房间的酒店。