连接两个不同的表并删除重复的条目

时间:2013-01-13 12:42:54

标签: sql postgresql

我是sql查询的新手。我有两张桌子:

表1:

id_s  name   post_code     city     subject
------------------------------------------
1     name1  postal1    city1    subject1
2     name2  postal2    city2    subject2
3     name3  postal3    city3    subject3
4     name4  postal4    city4    subject4
...
~350

表2:

id_p  name   post_code     city     subject
------------------------------------------
1     name1  postal1    city1    subject1
2     name2  postal2    city2    subject2
3     name3  postal3    city3    subject3
4     name4  postal4    city4    subject4 
...
~1200

我想加入两个表,并删除具有相同名称和邮政编码的条目。我找到了一些关于如何做的答案,但它们太复杂了。

3 个答案:

答案 0 :(得分:7)

您可以使用UNION子句,UNION将检查重复项,并且只返回不同的行

SELECT * FROM table1
UNION
SELECT * FROM Table2

编辑:要存储来自两个表的数据而不重复,请执行此操作

INSERT INTO TABLE1
SELECT * FROM TABLE2 A
WHERE NOT EXISTS (SELECT 1 FROM TABLE1 X 
                  WHERE A.NAME = X.NAME AND 
                  A.post_code = x.post_code)

这将从table2插入与table1

中的名称,邮政编码不匹配的行

替代方案是您也可以创建新表而不是触摸table1和table2

CREATE TABLE TABLENAME AS
SELECT * FROM table1
UNION
SELECT * FROM Table2

答案 1 :(得分:1)

您可以像这样提供SELECT INTO命令

SELECT * INTO newtable FROM table1
UNION
SELECT * FROM table2;

这将从table1和table2创建一个newtable,没有任何重复

答案 2 :(得分:0)

试试这个简单的:

(select * from table1 MINUS select * from table2)
UNION
(select * from table2 MINUS select * from table1)