"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment conserver l'ordre des valeurs dans la requête `in` de MySQL?

Comment conserver l'ordre des valeurs dans la requête `in` de MySQL?

Publié le 2025-05-02
Parcourir:672

How Can I Preserve the Order of Values in a MySQL `IN` Query?

Préserver l'ordre spécifié dans mysql "dans" requêtes

Lors de la question des données à l'aide de MySQL, l'opérateur "in" vous permet de sélectionner des enregistrements basés sur un ensemble de valeurs. Cependant, il est important de noter que le comportement par défaut de ces requêtes ne maintient pas l'ordre des valeurs spécifiées.

Problème:

dans un scénario où vous avez un tableau avec une clé primaire inscrite automatiquement basée sur la clé primaire sur la commande principale. Cela peut être problématique si vous souhaitez préserver la séquence des résultats.

Solution:

Pour réaliser l'ordre souhaité, vous pouvez utiliser la fonction Field () en conjonction avec la clause Order By. La fonction Field () attribue des positions aux valeurs en fonction de l'ordre dans lequel ils apparaissent dans sa liste d'arguments. Voici un exemple:

SELECT * FROM foo f
WHERE f.id IN (2, 3, 1)
ORDER BY FIELD(f.id, 2, 3, 1);

Dans cette requête, la liste d'arguments de champ () spécifie la séquence dans laquelle vous voulez que les résultats apparaissent. The ORDER BY clause sorts the results based on the positions assigned by FIELD().

Explanation:

  • The FIELD() function assigns the following positions to the values:

    • 2 (first argument): Position 1
    • 3 (second Argument): position 2
    • 1 (troisième argument): position 3
  • L'ordre par clause trie les résultats dans l'ordre croissant des positions attribuées par champ (). Cela peut être particulièrement utile dans les scénarios où vous avez affaire à des ensembles de données ordonnés ou lorsque vous souhaitez maintenir des relations spécifiques entre les enregistrements.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3