Maison >base de données >tutoriel mysql >Comment résoudre l'erreur MySQL : « Vous ne pouvez pas spécifier la table cible pour la mise à jour dans la clause FROM » ?

Comment résoudre l'erreur MySQL : « Vous ne pouvez pas spécifier la table cible pour la mise à jour dans la clause FROM » ?

DDD
DDDoriginal
2025-01-22 19:57:13930parcourir

How to Resolve MySQL Error:

Dépannage de l'erreur MySQL : "Vous ne pouvez pas spécifier la table cible pour la mise à jour dans la clause FROM"

Cette erreur MySQL courante se produit lorsque votre instruction UPDATE inclut une sous-requête faisant référence à la même table en cours de mise à jour. La restriction de MySQL sur cette pratique découle de ses limitations de traitement interne.

La solution consiste à encapsuler la référence de table dans la requête interne à l'aide de parenthèses. Cela crée un ensemble de données temporaire et indépendant pour l'opération de mise à jour. Prenons cet exemple :

<code class="language-sql">UPDATE myTable
SET myTable.A = (SELECT B FROM (SELECT * FROM myTable) AS subquery)</code>

Ici, myTable dans la requête interne est alias subquery, le séparant ainsi de l'instruction principale UPDATE. MySQL utilise ensuite le jeu de résultats de cette sous-requête pour effectuer la mise à jour.

Pour des performances optimales, sélectionnez uniquement les colonnes nécessaires dans la requête interne et incluez toujours une clause WHERE pour affiner les lignes mises à jour. Cela évite un traitement inutile de l'ensemble du tableau.

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