Oracle SQL - 使用连接查找一个表中的值,而不是另一个
问题描述:
因为显然每个人都讨厌子选择,所以我想用连接来完成。Oracle SQL - 使用连接查找一个表中的值,而不是另一个
对于一个令人难以置信的人为的例子,采取两个表,其中一个从1-6的数字列表和一个从0-8的偶数列表。然后,我的目标是输出表格Nums中的所有奇数。
Table Nums
Number
One
Two
Three
Four
Five
Six
Table Even
Number
Zero
Two
Four
Six
Eight
如果我只是想获得偶数是在订购数量,我会做的列表...
select nums.number
FROM nums,
even,
where nums.number = even.number;
但是,我怎么能使用这些表来获取列表在桌子Nums的non-evens?或者,换句话说,有点像......如果使用得当......“有人不喜欢的东西”本身并不是一个好足够的理由恕我直言
select nums.number
from nums
where nums.number not in (select number from even);
答
子查询的罚款。
有几个选项 - 仅有2为例:
SELECT nums.number FROM nums
LEFT OUTER JOIN even ON even.number = nums.number
WHERE even.number IS NULL
OR
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;
@Jeremy如果您需要使用SQL Server来做到这一点,那么请使用EXCEPT,这与Oracle的MINUS相同。 – Yahia 2012-02-09 08:18:28