Maison > base de données > tutoriel mysql > Comment effectuer une opération de mise à jour sur la base de données MySQL en même temps que la sélection

Comment effectuer une opération de mise à jour sur la base de données MySQL en même temps que la sélection

黄舟
Libérer: 2016-12-24 17:25:13
original
2802 Les gens l'ont consulté

MySQL ne permet pas à SELECT FROM de pointer vers la table utilisée pour UPDATE, ce qui prête parfois à confusion. Bien sûr, il existe de meilleurs moyens que de créer des tables temporaires sans fin. Cet article explique comment METTRE À JOUR une table et utiliser SELECT dans la clause de requête en même temps.

Description du problème
Supposons que la table que je souhaite METTRE À JOUR est la même que la clause de requête. Il existe de nombreuses raisons pour cela. Par exemple, mettre à jour les champs de la table avec des données statistiques (dans ce cas, vous devez utiliser la clause group pour renvoyer la valeur statistique), mettre à jour les champs d'un enregistrement vers un autre enregistrement sans utiliser de non-. déclarations standards, etc. Par exemple :
créer une table pommes (variety char(10) clé primaire, prix int);
insérer dans les valeurs des pommes('fuji', 5), ('gala', 6);
mettre à jour les pommes
définir le prix = (sélectionner le prix parmi les pommes où variété = 'gala')
où variété = 'fuji';
Le message d'erreur est : ERREUR 1093 (HY000) : Vous ne pouvez pas spécifier la table cible ' apples' for update in FROM clause. La documentation UPDATE du manuel MySQL explique ceci : "Actuellement, vous ne pouvez pas mettre à jour une table et sélectionner dans la même table dans une sous-requête."
Dans cet exemple, le problème est très simple à résoudre. , mais vous devez parfois mettre à jour la cible via des clauses de requête. Heureusement, nous avons une solution.

Solution
Étant donné que MySQL implémente des requêtes imbriquées dans la clause FROM via des tables temporaires, le chargement de la requête imbriquée dans une autre requête imbriquée peut effectuer la requête de la clause FROM et enregistrer Tout est effectué dans des tables temporaires, puis indirectement référencé dans les requêtes périphériques. L'instruction suivante est correcte :
mettre à jour les pommes
fixer le prix = (
sélectionner le prix à partir de (
sélectionner * parmi les pommes
) comme x
où variété = 'gala')
où variété = 'fuji';

Ce qui précède est le contenu de la méthode de base de données MySQL effectuant l'opération de mise à jour lors de la sélection. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn). )!


Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal