Maison > base de données > tutoriel mysql > le corps du texte

Comment pouvez-vous contrôler l'ordre des résultats dans une fonction MySQL IN() ?

DDD
Libérer: 2024-11-13 01:52:02
original
123 Les gens l'ont consulté

How Can You Control the Order of Results in a MySQL IN() Function?

Ordre MySQL dans une fonction IN()

Lors de l'exécution d'une requête avec une clause IN(), il peut être souhaitable de trier les éléments retournés en fonction de l'ordre dans lequel ils ont été fournis dans la fonction. Par défaut, MySQL ne garantit pas cet ordre.

Considérons l'exemple suivant :

SELECT id, name FROM mytable WHERE name IN ('B', 'A', 'D', 'E', 'C');
Copier après la connexion

La sortie attendue peut être triée dans l'ordre dans lequel les valeurs ont été saisies dans la fonction IN() :

id name
5 B
6 B
1 D
15 E
17 E
9 C
18 C

Au lieu de cela, MySQL peut appliquer son propre algorithme de tri, ce qui pourrait entraîner un ordre différent.

Solution :

Pour garantir le ordre souhaité, MySQL fournit la fonction FIELD(). Cette fonction prend une chaîne et une série de chaînes et renvoie la position de la première chaîne dans les arguments suivants.

En utilisant FIELD(), vous pouvez trier le résultat comme suit :

SELECT id, name
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY FIELD(name, 'B', 'A', 'D', 'E', 'C')
Copier après la connexion

Cette requête garantit que les lignes sont renvoyées dans l'ordre spécifié dans la fonction IN().

Optimisation des performances :

Alors que la fonction FIELD() remplit les fonctionnalité souhaitée, il est important de prendre en compte les implications en termes de performances. Pour les ensembles de données volumineux, l'utilisation d'une colonne indexée spécialement conçue pour le tri peut améliorer considérablement les performances.

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal