Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara memeriksa catatan yang ada sebelum memasukkan catatan untuk setiap pengguna ke dalam tabel yang sama?

Salah satu metode cukup menggunakan agregasi bersyarat:

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;

Anda mungkin menginginkan solusi yang lebih umum. Jika Anda ingin memastikan bahwa pasangan pengguna/kunci tidak pernah diduplikasi, buat batasan atau indeks unik pada kolom tersebut:

alter table users_settings add constraint unq_users_settings_user_id_key
    unique (user_id, key);

Kemudian, Anda dapat melewati penyisipan baris menggunakan 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 tidak apa-apa, karena nilainya sama. MySQL melewatkan melakukan penyisipan dan tidak mengembalikan kesalahan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan hanya baca MySQL yang aneh

  2. Bagaimana menerapkan fitur pencarian yang lebih efisien?

  3. MySQL membuat waktu dan memperbarui stempel waktu

  4. Kesalahan SQL:1064, SQLState:42000 di @Query - JPA, MySQL, Hibernate

  5. cara memilih jumlah dari kueri utama ke dalam subkueri