如何只选择不在另一个表中的行而不获取另一个表的数据-PLSQL
我正在尝试从一个具有特定条件的表中选择所有行。我正在使用oracleplsql 我有两张桌子: 书籍如何只选择不在另一个表中的行而不获取另一个表的数据-PLSQL,sql,join,plsql,oracle-sqldeveloper,Sql,Join,Plsql,Oracle Sqldeveloper,我正在尝试从一个具有特定条件的表中选择所有行。我正在使用oracleplsql 我有两张桌子: 书籍 身份证 名字 页面 身份证 言语 书号 一本书可以有多页。 我想找到所有没有50字页面的书。 我找到的唯一解决方案是做一个左外连接,然后用空值过滤 Select * from Books b LEFT OUTER JOIN Page p on b.id = p.book_id and p.words = 50 where p.words is null 我认为这不是一个好的解决方案,
- 身份证
- 名字
- 身份证
- 言语
- 书号
Select * from Books b
LEFT OUTER JOIN Page p on b.id = p.book_id and p.words = 50
where p.words is null
我认为这不是一个好的解决方案,但它是有效的,你知道还有其他方法吗
我不想获取任何关于页面的信息。如果我做一个普通连接,然后我应用这个条件,我得到一本书的N行,我只想得到每本书的1行
谢谢。您可以调整您的
选择
,使其仅为b.*
可能更常见的选择是不存在
:
select b.*
from Books b
where not exists (select 1
from Page p
where b.id = p.book_id and p.words = 50
);
这两种方法应具有相似的性能特征 “不存在”是我需要的条件。我不知道我可以在甲骨文中使用它,谢谢!!!