Един метод просто използва условно агрегиране:
insert into users_settings (user_id, key)
select user_id, 'app_reminder'
from users_settings
group by user_id
having sum(key = 'app_reminder') = 0;
Може да искате по-общо решение. Ако искате да сте сигурни, че двойките потребител/ключ никога не се дублират, тогава създайте уникално ограничение или индекс за тези колони:
alter table users_settings add constraint unq_users_settings_user_id_key
unique (user_id, key);
След това можете да пропуснете вмъкването на редовете, като използвате on duplicate key update
:
insert into users_settings (user_id, key)
select distinct user_id, 'app_reminder'
from users_settings
on duplicate key update user_id = values(user_id);
update
не прави нищо, защото стойността е същата. MySQL пропуска вмъкването и не връща грешка.