Lors de l'insertion de données dans une table où certaines colonnes peuvent déjà existent, vous souhaiterez peut-être mettre à jour ces colonnes avec de nouvelles valeurs. MySQL fournit une syntaxe pratique pour de tels scénarios en utilisant la clause "ON DUPLICATE KEY UPDATE".
Dans votre requête, vous avez une instruction "INSERT INTO" suivie d'une instruction "SELECT". Le but est d'insérer de nouvelles lignes dans la table "lee" et de mettre à jour les lignes existantes qui correspondent à une clé unique. Pour ce faire, vous devez spécifier les colonnes à mettre à jour dans la clause "ON DUPLICATE KEY UPDATE".
MySQL interprète la partie avant le signe égal (=) comme faisant référence aux colonnes nommées dans le champ "INSERT INTO". "clause. La partie après le signe égal fait référence aux colonnes de la clause "SELECT".
Par exemple :
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, ...
Dans cette requête, les colonnes de la clause "INSERT INTO" qui sont non mis à jour sont "exp_id", "created_by", "location", "animal", "starttime" et "endtime". Toutes les autres colonnes, telles que "entct", "inact", "inadur", "inadist", etc., sont mises à jour avec les valeurs de la clause "SELECT".
En utilisant la syntaxe appropriée, vous pouvez effectuez des insertions et des mises à jour en une seule requête, garantissant ainsi que vos données sont maintenues à jour efficacement.
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!