Sql 从一个表中选择列,该列在另一个表中为空

Sql 从一个表中选择列,该列在另一个表中为空,sql,database,oracle,Sql,Database,Oracle,我试图列出一个表中的数据,而另一个表中的等效数据尚未输入。解释起来有点罗嗦,但我想做的是: 我真的很难在房间里不存在数据的地方提取数据,非常感谢您的帮助 谢谢大家! e: 尽管Santhosh发布了一个很好的解决方案,但我还是想宣传EXISITS,因为它更地道。这个查询应该像一句描述你想做什么(如果可能的话)的句子一样读给新开发人员听 oracle优化器似乎能很好地处理大查询中的EXISTS(我无法引用确切的来源,仅从asktom或类似站点上的许多查询中,EXISTS似乎能在许多情况下进行优化,

我试图列出一个表中的数据,而另一个表中的等效数据尚未输入。解释起来有点罗嗦,但我想做的是:

我真的很难在房间里不存在数据的地方提取数据,非常感谢您的帮助

谢谢大家!

e:


尽管Santhosh发布了一个很好的解决方案,但我还是想宣传EXISITS,因为它更地道。这个查询应该像一句描述你想做什么(如果可能的话)的句子一样读给新开发人员听

oracle优化器似乎能很好地处理大查询中的EXISTS(我无法引用确切的来源,仅从asktom或类似站点上的许多查询中,EXISTS似乎能在许多情况下进行优化,其中类似语句可能会在大查询中失败……)


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

发布您的表结构和所需结果。通常这样做是通过
外部连接
完成的,然后
WHERE is NULL
WHERE NOT EXISTS
是您的朋友。是的。内部联接为您提供两个表中的记录。在这种情况下,您需要使用左联接或右联接
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;
select h.*
from hotel as h
left join room as r
on h.number = r.hotelnumber
where r.hotelnumber is null
SELECT * FROM hotel h
WHERE NOT EXISTS
( SELECT * FROM room r
  WHERE r.hotelnumber = h.number
)