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,
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!