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

问题描述 投票:3回答:3

我是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

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

sql postgresql
3个回答
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
投票

你可以给这样的SELECT INTO命令

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

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


0
投票

试试这个简单的:

(select * from table1 MINUS select * from table2)
UNION
(select * from table2 MINUS select * from table1)
© www.soinside.com 2019 - 2024. All rights reserved.