首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一个表合并到另一个表

从一个表合并到另一个表
EN

Stack Overflow用户
提问于 2014-05-22 04:49:37
回答 3查看 53关注 0票数 0

我有以下两个表:

代码语言:javascript
复制
table 1                   table 2
+-------------+------+    +-------------+------+
|     ssn     |  id  |    |     ssn     |  id  | 
+-------------+------+    +-------------+------+
|  123456789  |  123 |    |  123456789  |  k12 |
|  123456789  |  456 |    |  999999999  |  k11 |
|  123456789  |  789 |    +-------------+------+
|  123456789  |  k12 |
|  999999999  |  799 |
+-------------+------+

如果没有匹配的id,我想要做的是将表2中的数据与表1中的数据合并。所以应该忽略123456789,因为该成员已经使用id k12显示了。应将记录999999999 k11添加到表1中。

EN

回答 3

Stack Overflow用户

发布于 2014-05-22 04:53:52

有几种方法可以做到这一点。这里有一个使用NOT EXISTS的例子

代码语言:javascript
复制
INSERT INTO Table1 
SELECT T2.ssn, T2.id
FROM Table2 T2
WHERE NOT EXISTS (
    SELECT 1 
    FROM Table1 T1
    WHERE T1.id = T2.id)

或者,您可以使用NOT IN

代码语言:javascript
复制
INSERT INTO Table1
SELECT ssn, id
FROM Table2
WHERE id NOT IN (SELECT id FROM Table1)
票数 2
EN

Stack Overflow用户

发布于 2014-05-22 05:11:34

代码语言:javascript
复制
INSERT INTO @Table1
( ssn, id)
SELECT t2.ssn, t2.id
FROM @table2 as t2
LEFT JOIN @table1 as t1
    ON t1.id = t2.id or t1.ssn = t2.ssn
WHERE t1.id IS NULL;

如果您担心id或ssn中的重复项,则只有在两者都是唯一的情况下才会插入

票数 0
EN

Stack Overflow用户

发布于 2014-05-22 05:12:11

如果这是您经常需要在大型表上执行的操作,那么这种左连接方法的执行速度可能会更快一些。

代码语言:javascript
复制
INSERT INTO Table1 
SELECT T2.ssn, T2.id
FROM Table2 T2
LEFT JOIN Table1 t1 ON t1.id = t2.id
WHERE t1.id IS NULL
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23793529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档