【问题标题】:Get all results from a table which doesn't have that combination in another table从另一个表中没有该组合的表中获取所有结果
【发布时间】:2011-12-31 15:44:19
【问题描述】:

我在 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 得到所有没有的结果
table 2 上有abc 的组合。

我该怎么做?

【问题讨论】:

    标签: sql oracle join union


    【解决方案1】:

    听起来你想要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 )
    

    【讨论】:

      【解决方案2】:

      不确定你是否想要这个:

      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
      

      【讨论】:

      • +1 用于展示完成工作的方法不止一种。根据要求,我会将其更改为select t1.* from...
      【解决方案3】:

      您可以使用 exists 子句。

      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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-09
        • 1970-01-01
        • 1970-01-01
        • 2016-06-16
        • 1970-01-01
        • 1970-01-01
        • 2018-05-15
        • 1970-01-01
        相关资源
        最近更新 更多