Maison > base de données > tutoriel mysql > Comment spécifier correctement les colonnes dans la clause `ON DUPLICATE KEY UPDATE` de MySQL avec `INSERT INTO ... SELECT ...` ?

Comment spécifier correctement les colonnes dans la clause `ON DUPLICATE KEY UPDATE` de MySQL avec `INSERT INTO ... SELECT ...` ?

Linda Hamilton
Libérer: 2024-12-03 11:26:16
original
496 Les gens l'ont consulté

How to Correctly Specify Columns in MySQL's `ON DUPLICATE KEY UPDATE` Clause with `INSERT INTO ... SELECT ...`?

Résolution de la syntaxe de mise à jour des colonnes dans "INSERT INTO ... SELECT FROM ... ON DUPLICATE KEY UPDATE"

Cette requête insère des données dans la table lee à partir du tmp table, mettant à jour les lignes existantes si un conflit de clé unique se produit. Cependant, la syntaxe de la clause ON DUPLICATE KEY UPDATE ne semble pas claire.

Solution

MySQL suppose que le côté gauche de l'équation après ON DUPLICATE KEY UPDATE fait référence aux colonnes dans la clause INSERT INTO , tandis que le côté droit fait référence aux colonnes de la clause SELECT.

Par exemple, considérez ce qui suit requête :

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, ...
Copier après la connexion

Dans cette requête, le côté gauche de la clause ON DUPLICATE KEY UPDATE correspond aux colonnes nommées dans la clause INSERT INTO. Les colonnes avant le signe égal représentent les colonnes de la table leo, et les colonnes après le signe égal représentent les valeurs à mettre à jour à partir de la clause 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal