从另一个表中没有该组合的表中获取所有结果

时间:2011-11-17 19:14:12

标签: sql oracle join union

我在Oracle上有两个表。说:

table1:
id    varchar2,
name  varchar2,
phone number,
age   number,
a     varchar2,
b     varchar2,
c     varchar2

table2:
z varchar2,
a varchar2,
b varchar2,
c varchar2

我应该得到table 1的所有结果 a上有bctable 2的组合。

我该怎么办?

3 个答案:

答案 0 :(得分:4)

听起来你想要NOT EXISTS

SELECT *
  FROM table1 t1
 WHERE NOT EXISTS (
    SELECT 1
      FROM table2 t2
     WHERE t1.a = t2.a
       AND t1.b = t2.b
       AND t1.c = t2.c )

答案 1 :(得分:4)

不确定你是否想要这个:

SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t1.a=t2.a AND t1.b=t2.b AND t1.c=t2.c
WHERE t2.z IS NULL

答案 2 :(得分:3)

您可以使用存在子句。

Select *
from table1 t1
where not exists
 (select * from table2 t2
  where t1.a = t2.a
  and t1.b = t2.b
  and t1.c = t2.c)