Вставить запись или обновить запись, если существует в таблице в одном запросе в MySQL - PullRequest
0 голосов
/ 19 июня 2011

Мой стол

member_id - profil_id - A - B - C
1           2           1   0   0
1           3           0   1   0

Я хочу обновить запись для (member_id=1 и profil_id=2 и A=1)

member_id - profil_id - A - B - C
1           2           2   0   0
1           3           0   1   0

и снова хочу обновить запись для (member_id=1 и profil_id=2 и A=1)

member_id - profil_id - A - B - C
1           2           3   0   0
1           3           0   1   0

Я хочу вставить запись для (member_id=1 и profil_id=4 и A=1)

member_id - profil_id - A - B - C
1           2           3   0   0
1           3           0   1   0
1           4           1   0   0

и снова хочу обновить запись для (member_id=1 и profil_id=4 и C=1)

member_id - profil_id - A - B - C
1           2           3   0   0
1           3           0   1   0
1           4           1   0   1

и снова хочу обновить запись для (member_id=1 и profil_id=4 и C=1)

member_id - profil_id - A - B - C
1           2           3   0   0
1           3           0   1   0
1           4           1   0   2

вот так ...

спасибо ..

1 Ответ

1 голос
/ 19 июня 2011

Есть два способа сделать это в MySQL. Первый использует REPLACE. Второй использует INSERT...ON DUPLICATE KEY UPDATE.

REPLACE попытается удалить строку и, независимо от успеха или неудачи, вставит новую строку.

INSERT...ON DUPLICATE KEY UPDATE попытается вставить строку, и, если вставка не удалась из-за дублирующего ключа в ошибке индекса, обновится.

...