Maison >base de données >tutoriel mysql >Exemple d'analyse de MySQL implémentant une requête et une mise à jour simultanées de la même table

Exemple d'analyse de MySQL implémentant une requête et une mise à jour simultanées de la même table

黄舟
黄舟original
2017-09-20 11:23:382277parcourir

Cet article présente principalement la méthode d'interrogation et de mise à jour simultanées de la même table dans la base de données MySQL. Les amis qui en ont besoin peuvent s'y référer

Dans les projets ordinaires, nous rencontrons souvent de tels problèmes : j'ai besoin des données. est mis à jour et interrogé simultanément dans Zhang Biao. Par exemple : il existe une table de données comme indiqué ci-dessous. L'opération de mise à jour doit maintenant être : mettre à jour la valeur de nom de status=1 avec la valeur de nom de id=2

Exemple danalyse de MySQL implémentant une requête et une mise à jour simultanées de la même table

Habituellement, l'instruction suivante nous vient à l'esprit pour répondre à cette exigence :

UPDATE tb_testSET NAME = ( SELECT NAME FROM tb_test WHERE id= 2)WHERE `status` = 1
mais une erreur est signalée. Le message d'erreur est :

Vous ne pouvez pas mettre à jour ou sélectionner la même table dans la même instruction. . Vous ne pouvez pas opérer sur la même table. Si vous y réfléchissez différemment, cela devrait être possible si ce n'est pas la même table. Par conséquent, le résultat de la sélection peut être considéré comme une table intermédiaire temporaire, et les données liées à la mise à jour souhaitées peuvent être obtenues à partir de la table intermédiaire. Par conséquent, la déclaration de mise à jour ci-dessus peut être modifiée comme suit : You can't specify target table 'tb_test' for update in FROM clause

UPDATE tb_testSET NAME = (select name from ( SELECT NAME FROM tb_test WHERE id = 2) as t)WHERE `status` = 1
De cette façon, l'opération dans la question peut être terminée. Le processus général est le suivant : interroger les données avec id=2 comme table intermédiaire t ; interroger les données définies à partir de la table t ; effectuer l'opération de mise à jour afin de ne pas mettre à jour et sélectionner la même table dans la même instruction, car c'est le cas. assez similaire à Deux tables sont exploitées, tb_test et la table intermédiaire t. Le résultat final est le suivant :


Exemple danalyse de MySQL implémentant une requête et une mise à jour simultanées de la même table

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