Maison > base de données > tutoriel mysql > Pourquoi MySQL renvoie-t-il l'erreur 1093 lors de la mise à jour d'une table à l'aide d'une sous-requête ?

Pourquoi MySQL renvoie-t-il l'erreur 1093 lors de la mise à jour d'une table à l'aide d'une sous-requête ?

Mary-Kate Olsen
Libérer: 2024-12-22 00:11:23
original
597 Les gens l'ont consulté

Why Does MySQL Throw Error 1093 When Updating a Table Using a Subquery?

Erreur MySQL 1093 : mise à jour de la table cible dans la sous-requête

Lors de la tentative d'exécution de la requête suivante dans MySQL :

UPDATE giveaways SET winner = '1' WHERE ID = (SELECT MAX(ID) FROM giveaways)
Copier après la connexion

Vous pouvez rencontrer l'erreur suivante :

#1093 - You can't specify target table 'giveaways' for update in FROM clause
Copier après la connexion

Cette erreur se produit car MySQL n'autorise pas la table cible d'une instruction UPDATE (cadeaux) à utiliser dans une sous-requête au sein de la clause WHERE.

Adaptation de la solution à partir de l'article de référence

Pour résoudre ce problème , adaptez la solution fournie dans l'article que vous avez référencé en utilisant une sous-requête imbriquée. Voici la requête mise à jour :

UPDATE giveaways SET winner='1'
WHERE Id = (SELECT Id FROM (SELECT MAX(Id) AS id FROM giveaways) AS t)
Copier après la connexion

Cette requête sélectionne efficacement la valeur Id maximale de la table des cadeaux en tant que sous-requête (t), puis utilise cette valeur pour mettre à jour la colonne gagnante dans la requête externe.

En imbriquant la sous-requête, vous évitez de spécifier la table cible (cadeaux) dans la clause FROM de la sous-requête, résolvant ainsi l'erreur.

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 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