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

MySQL jika baris ada perbarui yang lain masukkan

Itulah yang disebut Upsert . Sintaks MySQL cukup aneh, tetapi Anda dapat melakukannya, seperti:

INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1)
ON DUPLICATE KEY UPDATE
  activityID = VALUES(activityID)

Ini hanya berfungsi untuk PK duplikat (bukan untuk bidang apa pun yang Anda suka), jadi dalam hal ini hanya akan berfungsi jika userID dan eventID buat PK dan Anda hanya ingin mengubah activityID

Jika tidak, Anda dapat menggunakan rute IF-ELSE, seperti:

DECLARE mycount INT;
SET mycount = (SELECT COUNT(*) FROM eventcounter WHERE userID=1 AND eventID=1);
IF mycount > 0 THEN
  UPDATE eventcounter SET activityID=1 WHERE userID=1 AND eventID=1;
ELSE
  INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1);
END IF;

Penafian:kode yang sama sekali belum teruji



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Opsi yang tidak didukung disediakan untuk mysql_options()

  2. PILIH setiap karyawan yang memiliki gaji lebih tinggi dari RATA-RATA departemennya

  3. bagaimana cara meminta (mencari) sql di Amazon Athena yang memiliki nilai JSON?

  4. Hibernate:Deadlock ditemukan saat mencoba mendapatkan lock

  5. Bagaimana cara melakukan pencocokan fuzzy nama perusahaan di MYSQL dengan PHP untuk pelengkapan otomatis?