Как я могу проверить наличие дубликатов перед вставкой в ​​таблицу при вставке с помощью select - PullRequest
9 голосов
/ 08 апреля 2011

Как проверить наличие дубликатов перед вставкой в ​​таблицу при вставке с помощью команды select:

insert into table1
select col1, col2 
from table2

Мне нужно проверить, есть ли в table1 строка с table1.col1.value = table2.col1.valueи если да, исключите эту строку из вставки.

Ответы [ 4 ]

17 голосов
/ 08 апреля 2011
INSERT INTO table1 
SELECT t2.col1, 
       t2.col2 
FROM   table2 t2 
       LEFT JOIN table1 t1 
         ON t2.col1 = t1.col1 
            AND t2.col2 = t1.col2 
WHERE  t1.col1 IS NULL 

Альтернативное использование кроме

INSERT INTO @table2 
SELECT col1, 
       col2 
FROM   table1 
EXCEPT 
SELECT t1.col1, 
       t1.col2 
FROM   table1 t1 
       INNER JOIN table2 t2 
         ON t1.col1 = t2.col1 
            AND t1.col2 = t2.col2 

Альтернативное использование Not Exists

INSERT INTO table2 
SELECT col1,col2 
FROM table1 t1
WHERE
NOT EXISTS( SELECT 1
    FROM table2 t2
    WHERE t1.col1 = t2.col1
          AND t1.col2 = t2.col2)
1 голос
/ 08 апреля 2011
insert into table1
select col1, col2 
from table2 
where table2.col1 not in (select col1 from table1)
0 голосов
/ 14 сентября 2012

Вы можете просто добавить IGNORE в свой оператор вставки.

например,

INSERT IGNORE INTO table1
SELECT col1, col2 
FROM table2

Это обсуждается здесь

0 голосов
/ 08 апреля 2011
insert into table1
select distinct col1, col2 
from table2 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...