关于不在条款中的查询?

时间:2011-12-07 19:11:29

标签: sql

您好我在两个文件File1和File 2上运行查询分别有字段a,b,c和d,e,f .A和D& B和E属于同一类型,是文件中的键。所以我正在运行一个查询来查找File1中不存在的所有File1记录。我正在运行连接,基于字段a,b和d,e。但是它有些不起作用:

select * from file1 where a,b not in ((select a,b from file1 x,file2 y where y.a=x.d
 and y.b=x.e) z)

它说不是条款不正确然后我试过:

select * from file1 where not exists (select a,b from file1 x,file2 y where y.a=x.d
     and y.b=x.e)  

它也不起作用!!!请提出建议!我在DB2 AS400上

2 个答案:

答案 0 :(得分:1)

SELECT *
    FROM file1 f1
    WHERE NOT EXISTS(SELECT NULL
                         FROM file2 f2
                         WHERE f1.a = f2.d
                             AND f1.b = f2.e)

您也可以使用LEFT JOIN执行此操作:

SELECT f1.*
    FROM file1 f1
        LEFT JOIN file2 f2
            ON f1.a = f2.d
                AND f1.b = f2.e
    WHERE f2.d IS NULL

答案 1 :(得分:0)

做一个简单的连接并在第二个表中应用一个WHERE子句,其中为NULL ...

select
      F1.a,
      F1.b,
      F1.c
   from
      File1 F1
         left join File2 F2
            on F1.a = F2.d
           and F1.b = F2.e
   where
      F2.d is null