Как обновить строку из одной таблицы в другую? - PullRequest
0 голосов
/ 23 августа 2011

Я пытаюсь обновить некоторые строки таблицы в другой таблице, сейчас я просто выясняю, как вставить строку из одной таблицы в другую, например:

INSERT INTO dialecte_org_5.tb_data_iae (
    SELECT * FROM dialecte_org_88.tb_data_iae WHERE id_dialecte = 2413
);

Каким может быть то же утверждение, но для обновления? Есть ли способ сделать что-то подобное, если строка существует -> «обновить», если нет «вставить»

Thx

1 Ответ

2 голосов
/ 23 августа 2011

Для вставки обычно требуется указать полный список полей как для оператора вставки, так и для выбора (http://dev.mysql.com/doc/refman/5.5/en/insert.html):

INSERT INTO dialecte_org_5.tb_data_iae (field1, field2, field3)
SELECT field1, field2, field3
FROM dialecte_org_88.tb_data_iae WHERE id_dialecte=2413;

И оператор обновления больше похож на это (http://dev.mysql.com/doc/refman/5.0/en/update.html):

UPDATE dialecte_org_5.tb_data_iae t1
INNER JOIN dialecte_org_88.tb_data_iae t2 ON t1.id = t2.id
SET t1.field1 = t2.field1, t1.field2 = t2.field2, t1.field3 = t2.field3
WHERE t2.id_dialecte=2413

Вы также можете использовать REPLACE INTO, который выполняет обе функции, но зависит от MySQL, не поддерживается другими СУБД (http://dev.mysql.com/doc/refman/5.0/en/replace.html):

REPLACE INTO dialecte_org_5.tb_data_iae t1
INNER JOIN dialecte_org_88.tb_data_iae t2 ON t1.id = t2.id
SET t1.field1 = t2.field1, t1.field2 = t2.field2, t1.field3 = t2.field3
WHERE t2.id_dialecte=2413
...