Maison >base de données >tutoriel mysql >Comment effectuer des mises à jour groupées dans MySQL à l'aide de INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE ?

Comment effectuer des mises à jour groupées dans MySQL à l'aide de INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE ?

DDD
DDDoriginal
2024-12-13 00:56:17358parcourir

How to Perform Bulk Updates in MySQL Using INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE?

Effectuer des mises à jour groupées avec INSERT INTO ... SELECT FROM ... ON DUPLICATE KEY UPDATE

Lors de la tentative d'insertion de nouvelles données dans un Dans la table, il peut y avoir des cas où les enregistrements existants avec des clés uniques identiques doivent être mis à jour avec les dernières valeurs. MySQL fournit une syntaxe pratique pour de tels scénarios en utilisant l'instruction INSERT INTO ... SELECT FROM ... ON DUPLICATE KEY UPDATE.

Dans votre cas, vous devez mettre à jour toutes les colonnes sauf exp_id, create_by, location, animal , heure de début et heure de fin. La syntaxe de cette clause de mise à jour est :

ON DUPLICATE KEY UPDATE <column_name>=<select_column_name>, ...

Ici, fait référence aux colonnes de la clause INSERT INTO, tandis que fait référence aux colonnes correspondantes dans la clause SELECT.

En fonction de votre requête, l'instruction complète ressemblerait à ceci :

INSERT INTO lee(exp_id, created_by, location, animal, starttime, endtime, entct, inact, inadur, inadist, smlct, smldur, smldist, larct, lardur, lardist, emptyct, emptydur)
SELECT id, uid, t.location, t.animal, t.starttime, t.endtime, t.entct, t.inact, t.inadur, t.inadist, t.smlct, t.smldur, t.smldist, t.larct, t.lardur, t.lardist, t.emptyct, t.emptydur
FROM tmp t WHERE uid=x
ON DUPLICATE KEY UPDATE entct=t.entct, inact=t.inact, inadur=t.inadur, inadist=t.inadist, smlct=t.smlct, smldur=t.smldur, smldist=t.smldist, larct=t.larct, lardur=t.lardur, lardist=t.lardist, emptyct=t.emptyct, emptydur=t.emptydur;

Avec cette instruction, MySQL insérera les données de tmp dans lee, et si une clé en double est rencontrée, il mettra à jour les colonnes spécifiées avec les valeurs de l'instruction SELECT.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn