创建一个表,该表仅包含一个表中存在的记录,而不存在于另一个表中

时间:2013-12-22 22:10:13

标签: sql

我是这里的新手,希望有人可以帮助这个SQL。我创建了两个表,其中一个表包含每条记录,另一个表包含我在表中不需要的记录。  我尝试以我研究的方式加入它们应该工作,只包括它们不存在的记录在第二个表中,但是我收到了一个错误。  SQL是:

Create table t3 as 
(Select * from t1 
 Left Outer join t2 
 on (t1.ID = t2.Orig_ID and t1.ID_Line = t2.Orig_ID_Line) 
 Where t2.Orig_ID is null 
 and t2.Orig_ID_Line is null) 

这应该很简单。但是,我收到一条错误,上面写着“Orig_ID中的重复列名”

HELP!  感谢。

2 个答案:

答案 0 :(得分:1)

您与原始声明非常接近,但忘记将列限制为来自t1的列,因此您的列数是预期的两倍。尝试:

CREATE TABLE t3 AS 
    (SELECT t1.* FROM t1         -- Key change * -> t1.*
       LEFT OUTER JOIN t2 
         ON (t1.ID = t2.Orig_ID AND t1.ID_Line = t2.Orig_ID_Line) 
      WHERE t2.Orig_ID IS NULL 
        AND t2.Orig_ID_Line IS NULL)

答案 1 :(得分:0)

试试这个

Create table t3 as 

select * from t1 where (t1.ID, t1.ID_Line) not in ( select t2.ID, t2.Orig_ID_Line from t2 where t2.ID is not null and t2.Orig_ID_Line is not null )

您会收到重复的列名称错误,因为您在两个表中都加入并选择了两个字段。因此,从查询中返回相同的列名,并且表不能具有相同的列名。您需要的是仅在t1表中选择列

select t1.* ......

但是你不需要加入操作。你需要的是简单的。使用“not in”运算符是您所需要的。看一下运算符中的in /​​ not的sql教程。