繁体   English   中英

Oracle SQL - 使用联接在一个表中查找值,而不是另一个表

[英]Oracle SQL - Using joins to find values in one table, and not another

因为显然每个人都讨厌子选择,我想使用连接来做到这一点。

对于一个令人难以置信的设计示例,请选择两个表,一个包含1-6的数字列表,另一个包含0-8的偶数列表。 然后,我的目标是输出Nums表中的所有奇数。

Table Nums
Number
One
Two
Three
Four
Five
Six

Table Even
Number
Zero
Two
Four
Six
Eight

如果我只想获得Nums中偶数的列表,我会...

select nums.number
FROM nums,
     even,
where nums.number = even.number;

但是,我如何使用这些表来获取Nums表中的非平均值列表? 换句话说,就像...

select nums.number
from nums
where nums.number not in (select number from even);

如果使用得当,SubSELECT很好......“有人不喜欢的东西”单独就不足以成为恕我直言。

有几个选项 - 仅举两个例子:

SELECT nums.number FROM nums 
LEFT OUTER JOIN even ON even.number = nums.number 
WHERE even.number IS NULL

要么

SELECT nums.number FROM nums
MINUS
SELECT even.number FROM even

对于Oracle:

select nums.number
  FROM nums,
       even
 where nums.number = even.number(+)
   and even.number is null;

对于ansi SQL:

SELECT nums.number
  FROM nums LEFT OUTER JOIN even ON nums.number = even.number
 WHERE even.number IS NULL;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM