Maison >base de données >tutoriel mysql >Comment conserver l'ordre des lignes dans les requêtes SQL avec la clause WHERE IN ?

Comment conserver l'ordre des lignes dans les requêtes SQL avec la clause WHERE IN ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 03:34:281045parcourir

How to Maintain Row Order in SQL Queries with WHERE IN Clause?

Contrôle de l'ordre des lignes avec la clause WHERE IN

Dans une instruction SQL (Structured Query Language) qui utilise la clause WHERE IN, les lignes renvoyées peuvent ne pas toujours respecter les ordre spécifié dans la clause.

Préserver l'ordre des lignes avec la fonction FIELD()

Pour remédier à cela, on peut utiliser la fonction FIELD() en conjonction avec la clause ORDER BY. La fonction FIELD() attribue une position à chaque ligne en fonction de l'ordre des valeurs spécifié dans la clause IN. En classant les lignes en fonction de cette position assignée, on peut conserver l'ordre d'origine de la clause WHERE IN.

Par exemple, considérons la requête SQL suivante :

SELECT *
FROM table
WHERE id IN (118, 17, 113, 23, 72);

Cette requête renvoie le lignes dans un ordre croissant en fonction de la colonne ID, en ignorant l'ordre spécifié dans la clause WHERE IN. Pour obtenir les lignes dans l'ordre spécifié par la clause IN, exécutez la requête suivante :

SELECT *
FROM table
WHERE id IN (118, 17, 113, 23, 72)
ORDER BY FIELD(id, 118, 17, 113, 23, 72);

Dans cette requête, la clause ORDER BY organise les lignes selon l'ordre des valeurs (118, 17, 113, 23, 72) spécifié dans la fonction FIELD(). Par conséquent, les lignes renvoyées respecteront la séquence définie dans la clause WHERE IN.

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