INSERT не будет перезаписывать существующие строки, а вместо этого выдаст ошибку (если, например, вы пометили столбец пользователя как уникальный и попытаетесь добавить уже существующего пользователя). Аналогичным образом, UPDATE не будет вставлять новые строки, а только изменять существующие.
Удаление и перезапись всей таблицы кажется приемлемым решением, если большинству пользователей требуется обновление, и есть пользователи, которых следует удалить, т. Е. Больше не содержать в новых таблицах оценок.
В противном случае я бы обновил таблицу:
Переносимое решение состоит в том, чтобы проверить, содержится ли ключ (то есть пользователь) в таблице (через SELECT), и затем использовать либо INSERT для несуществующих ключей, либо UPDATE для уже существующих ключей. Конечно, вы также можете просто попробовать INSERT и проверить код ошибки, возвращаясь к UPDATE, если вы получили ошибку нарушения ограничения.
В MySQL вы также можете использовать следующий синтаксис, который позволяет вам работать только с одним запросом:
INSERT INTO ... ON DUPLICATE KEY UPDATE score = ...
Однако это не переносимо и не будет работать с другими СУБД, только с MySQL.