Maison >base de données >tutoriel mysql >« UNION ALL » préserve-t-il l'ordre des lignes dans les jeux de résultats SQL ?

« UNION ALL » préserve-t-il l'ordre des lignes dans les jeux de résultats SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-31 00:24:09275parcourir

Does `UNION ALL` Preserve the Order of Rows in SQL Result Sets?

UNION ALL garantit-il l'ordre dans les ensembles de résultats ?

En SQL, l'opérateur UNION ALL combine les résultats de plusieurs instructions SELECT. Cependant, cela ne garantit pas l’ordre des résultats. En l'absence de clause ORDER BY, l'ordre des lignes n'est pas défini et peut varier.

Considérez l'exemple fourni dans la question :

SELECT 'O'
UNION ALL
SELECT 'R'
UNION ALL
SELECT 'D'
UNION ALL
SELECT 'E'
UNION ALL
SELECT 'R'

Il est possible que les résultats soient être affiché dans l’ordre « O-R-D-E-R », mais il n’y a aucune garantie. L'ordre peut différer en fonction de facteurs tels que le moteur de base de données, la distribution des données et d'autres optimisations.

Pour appliquer un ordre spécifique, une clause ORDER BY doit être utilisée. Pour l'exemple donné, la colonne SortOrder peut être ajoutée à chaque instruction SELECT :

SELECT 'O', 1 SortOrder
UNION ALL
SELECT 'R', 2
UNION ALL
SELECT 'D', 3
UNION ALL
SELECT 'E', 4
UNION ALL
SELECT 'R', 5
ORDER BY SortOrder

Cette requête triera explicitement les résultats dans l'ordre "O-R-D-E-R". Veuillez noter que l'ajout de la colonne SortOrder n'est nécessaire que si l'ordre souhaité est différent de l'ordre par défaut (qui n'est pas défini dans ce cas).

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