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

INSERT INTO atau UPDATE dengan dua kondisi

itulah yang insert on duplicate key update adalah untuk.

Halaman Manual untuk itu di sini .

Caranya adalah tabel tersebut perlu memiliki kunci yang unik (bisa berupa gabungan) agar clash melakukan insert dapat dideteksi. Dengan demikian, pembaruan terjadi pada baris itu, jika tidak, sisipan. Itu bisa menjadi kunci utama, tentu saja.

Dalam kasus Anda, Anda dapat memiliki kunci komposit seperti

unique key(theName,theDate)

Jika baris sudah ada, clash terdeteksi, dan pembaruan terjadi.

Ini contoh lengkapnya

create table myThing
(   id int auto_increment primary key,
    name int not null,
    values1 int not null,
    values2 int not null,
    dates date not null,
    unique key(name,dates) -- <---- this line here is darn important
);

insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;
insert myThing(name,values1,values2,dates) values (778,1,1,'2015-07-11') on duplicate key update values2=values2+1;
-- do the 1st one a few more times:
insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;
insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;
insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;

tampilkan hasil

select * from myThing;
+----+------+---------+---------+------------+
| id | name | values1 | values2 | dates      |
+----+------+---------+---------+------------+
|  1 |  777 |       1 |       4 | 2015-07-11 |
|  2 |  778 |       1 |       1 | 2015-07-11 |
+----+------+---------+---------+------------+

Seperti yang diharapkan, sisipkan pada pembaruan kunci duplikat berfungsi, hanya 2 baris.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Format Angka sebagai Persentase di MySQL

  2. php mysqli_connect:metode otentikasi tidak diketahui oleh klien [caching_sha2_password]

  3. Jenis bidang basis data terbaik untuk URL

  4. Cara Membuat Database MySQL di cPanel

  5. Cara menentukan versi MySQL