2016-05-21 6 views
0

У меня есть имя из двух таблиц: Table1 & Таблица2.Как вставить записи в одну таблицу в другую таблицу с помощью SQL?

Table1:

ID NAME AGE 
----------------- 
1 ABC  30 
2 XYZ  40 
3 XXX  50 
4 aaa  60 

Table2:

ID NAME AGE 
----------------- 
1 ABC  30 
2 XYZ  40 
3 XXX  50 

я должен вставить table1 записи в Table2. Но мне не нужно вставлять существующий элемент. Мне нужно вставить в таблицу только несовпадающие данные. Как это сделать.

E.g: Таблица2 У меня уже есть ID 1,2,3, но нет 4. Мне нужно вставить только ID 4 строки.

ответ

1

Может

INSERT INTO Table2 
SELECT * FROM Table1 WHERE ID NOT IN (SELECT ID FROM Table2) 
+0

спасибо за Ваш ответ. Работает нормально. – dhamo

0

Попробуйте

insert into Table2 
select * from Table1 t1 
where not exists (select 1 from Table2 t2 where t2.ID=t1.ID) 
0

Вы можете добиться этого с помощью LEFT JOIN тоже. Эффективность работы это лучше, чем использование оператора IN.

INSERT INTO Table2 (ID, NAME, AGE) 
SELECT T1.ID, T1.NAME, T1.AGE 
FROM Table1 T1 
LEFT JOIN Table2 T2 ON T2.ID = T1.ID 
WHERE T2.ID IS NULL 

Работа исполнение с данными выборочных данных:

DECLARE @Table1 TABLE (ID INT, NAME VARCHAR(50), AGE INT) 

INSERT INTO @Table1 (ID, NAME, AGE) 
VALUES 
(1, 'ABC', 30), 
(2, 'XYZ', 40), 
(3, 'XXX', 50), 
(4, 'aaa', 60) 

DECLARE @Table2 TABLE (ID INT, NAME VARCHAR(50), AGE INT) 

INSERT INTO @Table2 (ID, NAME, AGE) 
VALUES 
(1, 'ABC', 30), 
(2, 'XYZ', 40), 
(3, 'XXX', 50) 

-- SELECT * FROM @Table2 

INSERT INTO @Table2 (ID, NAME, AGE) 
SELECT T1.ID, T1.NAME, T1.AGE 
FROM @Table1 T1 
LEFT JOIN @Table2 T2 ON T2.ID = T1.ID 
WHERE T2.ID IS NULL 

-- SELECT * FROM @Table2 
Смежные вопросы