Maison >base de données >tutoriel mysql >Pouvez-vous combiner les opérations MySQL UPDATE et SELECT en une seule requête pour « posséder » une ligne et récupérer ses paramètres ?

Pouvez-vous combiner les opérations MySQL UPDATE et SELECT en une seule requête pour « posséder » une ligne et récupérer ses paramètres ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-03 05:10:31929parcourir

Can you combine MySQL UPDATE and SELECT operations into one request to

MISE À JOUR MySQL et SELECT en une seule requête

De nombreuses applications de travail effectuent des tâches en boucle en accédant à une table de tâches dans une base de données MySQL à l'aide API C natives de MySQL. Pour posséder une tâche, une application :

  1. Génère un identifiant unique au monde.
  2. Exécute une requête UPDATE pour définir le champ guid sur l'ID généré pour une ligne avec un guid de 0 .
  3. Exécute une requête SELECT pour récupérer les paramètres de la tâche en fonction du guid.

Existe-t-il un moyen de combiner ces étapes en un seul appel au serveur, efficacement " posséder" une ligne et obtenir ses paramètres en une seule opération ?

Réponse :

Oui, il est possible d'y parvenir en utilisant une requête UPDATE avec une sous-requête :

UPDATE tasks
SET guid = (
    SELECT id
    FROM tasks
    ORDER BY id DESC
    LIMIT 1
)
WHERE guid = 0
RETURNING guid, params;

Cette requête met à jour le champ guid de la ligne avec le guid 0 en utilisant l'identifiant le plus élevé de la table des tâches comme nouveau guid. Il renvoie également à la fois le guid mis à jour et les paramètres de la tâche sur une seule ligne.

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