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

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

4

3 回答 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
于 2013-01-13T12:46:09.270 回答
1

你可以给出这样的SELECT INTO 命令

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

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

于 2013-01-13T13:01:27.263 回答
0

试试这个简单的:

(select * from table1 MINUS select * from table2)
UNION
(select * from table2 MINUS select * from table1)
于 2017-12-25T10:36:08.960 回答