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!