Mysql
 sql >> база данни >  >> RDS >> Mysql

INSERT INTO или UPDATE с две условия

това е, което insert on duplicate key update е за.

Страницата наръчник за него е тук .

Номерът е, че таблицата трябва да има уникален ключ (може да бъде композитен), така че clash на извършване на вмъкване може да бъде открит. Като такава, актуализацията да се случи на този ред, в противен случай вмъкване. Може да бъде първичен ключ, разбира се.

Във вашия случай бихте могли да имате съставен ключ като

unique key(theName,theDate)

Ако редът вече е там, clash се открива и актуализацията се извършва.

Ето пълен пример

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;

покажи резултати

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

Както се очакваше, вмъкването при актуализация на дублиран ключ работи, само 2 реда.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преглед и качване на изображения с помощта на база данни PHP и MySQL

  2. Как да настроите root паролата на нула

  3. Как да копирам таблица в MySQL

  4. GROUP_CONCAT еквивалент в Django

  5. Как да добавите разделител към конкатениран низ в MySQL – CONCAT_WS()