2011-01-31 4 views
1

У меня есть две таблицы с одинаковой структурой.mysql - обновление строк между таблицами

old_table выглядит (пример, а не фактическое таблицу), как это:

Name - DOB - id 
John - xxxx - 344 

new_table выглядит следующим образом:.

Name - DOB - id 
John - 1980 - 344 

Если new_table имеет столбец DOB заполняется в поле ID (уникальный), а остальная часть структуры одинакова между таблицами. Я хочу обновить поля DOB в old_table со значениями из new_table, где поля ID одинаковы (поэтому в приведенном выше примере, где «id» = 344 и т. Д. Для всех строк и идентификаторов).

Я думал об использовании: INSERT INTO old_table (DOB) SELECT DOB FROM new_table WHERE ...

, но потом мой MySQL знание замолкает. Должен ли я использовать INSERT или я могу использовать UPDATE здесь? И как мне только вытащить значение DOB из old_table, где поле ID = поле идентификатора new_table?

Спасибо ..

ответ

4
UPDATE old_table, new_table 
    SET old_table.DOB = new_table.DOB 
    WHERE old_table.id = new_table.id 

EDIT: на основе комментария от OP

UPDATE old_table, new_table 
    SET old_table.DOB = new_table.DOB 
    WHERE old_table.id = new_table.id 
     AND old_table.DOB = 'xxxx' 
     AND old_table.field4 = '-' 
+0

это отлично работает, но что, если я хочу только обновлять строки WHERE old_table.DOB = 'xxxx' AND old_table.field4 = '-'? – themerlinproject

+0

@ user410341: Просто добавьте эти условия в предложение 'WHERE'. См. Мое редактирование. –

0

использование обновление UPDATE old table ВЗ установить DOB = (выберите DOB из newTable нт где nt.id = ot.id) что-то подобное должно работать

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