Question Insérer dans une table MySQL ou mettre à jour s'il existe


Je veux ajouter une ligne à une table de base de données, mais si une ligne existe avec la même clé unique, je veux mettre à jour la ligne.

Par exemple,

insert into table (id, name, age) values(1, "A", 19)

Disons que la clé unique est id, et dans ma base de données il y a une rangée avec id = 1. Dans ce cas, je veux mettre à jour cette ligne avec ces valeurs. Normalement, cela donne une erreur. Si j'utilise insert IGNORE il ignorera l'erreur, mais il ne sera toujours pas mis à jour.


681
2017-11-17 14:08


origine


Réponses:


Utilisation INSERT ... ON DUPLICATE KEY UPDATE

QUESTION:

INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE    
name="A", age=19

1279
2017-11-17 14:12



Découvrez REPLACE

http://dev.mysql.com/doc/refman/5.0/en/replace.html

REPLACE into table (id, name, age) values(1, "A", 19)

190
2017-11-17 14:14



Essayez ceci:

INSERT INTO table (id, name, age) VALUES (1, 'A', 19) ON DUPLICATE KEY UPDATE id = id + 1;

J'espère que cela t'aides.


21
2017-11-17 14:17



Lorsque vous utilisez l'insertion par lots, utilisez la syntaxe suivante:

INSERT INTO TABLE (id, name, age) VALUES (1, "A", 19), (2, "B", 17), (3, "C", 22)
ON DUPLICATE KEY UPDATE
    name = VALUES (name),
    ...

20
2018-01-27 12:45



Essaye ça:

INSERT INTO table (id,name,age) VALUES('1','Mohammad','21') ON DUPLICATE KEY UPDATE name='Mohammad',age='21' 

Remarque:
Ici si id est la clé primaire puis après la première insertion avec id='1' chaque fois que vous essayez d'insérer id='1' mettra à jour le nom et l'âge et l'ancien nom changera.


16
2017-08-27 07:42



INSERT IGNORE INTO table (id, name, age) VALUES (1, "A", 19);

INTO TABLE (id, name, age) VALUES(1, "A", 19) ON DUPLICATE UPDATE SET NAME = "A", AGE = 19;

REPLACE INTO table (id, name, age) VALUES(1, "A", 19);

Toutes ces solutions vont travailler sur votre question.

Si vous voulez savoir en détails concernant ces déclarations visitez ce lien 


8
2017-12-07 21:06



Lors de l'utilisation de SQLite:

REPLACE into table (id, name, age) values(1, "A", 19)

À condition que id est la clé primaire. Ou bien il insère simplement une autre ligne. Voir INSÉRER (SQLite).


7
2017-11-17 07:11