2014-02-14 2 views
0

У меня есть одна и та же база данных, одна новая, одна старше.Вставить из другого db, где запись не существует

Мне нужно скопировать любые новые строки из нового db в старый db.

В каждой строке есть entry_id, поэтому я ищу способ проверить, существует ли это до копирования этой строки.

Я думал, что, возможно, WHERE NO EXISTS будет тем, что мне нужно, но я не могу понять, как это сделать при копировании с другого db.

INSERT INTO lightand_expressionengine.exp_channel_data 
FROM lightand_expressionengineold.exp_channel_data 
WHERE NOT EXISTS() 

Любые идеи?

ответ

2

Что-то вроде этого:

INSERT INTO lightand_expressionengine.exp_channel_data(col1, . . . coln) 
    select col1, . . . coln 
    FROM lightand_expressionengineold.exp_channel_data o 
    WHERE NOT EXISTS (select 1 
         from lightand_expressionengine.exp_channel_data n 
         where o.id = n.id 
        ); 

Это просто проверяет одно поле (id). У вас могут быть другие условия.

+0

Спасибо. Как я могу сказать, чтобы вставлять в каждый столбец из каждого столбца. Будет ли это просто (*) на двух верхних строках, чтобы заменить col1, ... coln)? – user2889310

+0

@ пользователь2889310. , , Да. Вы можете использовать '*', предполагая, что обе таблицы имеют одинаковые столбцы в одном порядке. –

Смежные вопросы