我有以下两个表:
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中。
发布于 2014-05-22 04:53:52
有几种方法可以做到这一点。这里有一个使用NOT EXISTS的例子
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
INSERT INTO Table1
SELECT ssn, id
FROM Table2
WHERE id NOT IN (SELECT id FROM Table1)发布于 2014-05-22 05:11:34
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中的重复项,则只有在两者都是唯一的情况下才会插入
发布于 2014-05-22 05:12:11
如果这是您经常需要在大型表上执行的操作,那么这种左连接方法的执行速度可能会更快一些。
INSERT INTO Table1
SELECT T2.ssn, T2.id
FROM Table2 T2
LEFT JOIN Table1 t1 ON t1.id = t2.id
WHERE t1.id IS NULLhttps://stackoverflow.com/questions/23793529
复制相似问题