我是这里的新手,希望有人可以帮助这个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! 感谢。
答案 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教程。