sql - ejemplos - Cuando no se especifica ''Ordenar por'', ¿qué orden elige una consulta para su conjunto de registros?
sql order by date (3)
Como ya se dijo, nunca debes confiar en la "orden predeterminada" porque no existe. De todos modos, si aún quieres saber algunos detalles curiosos sobre la implementación del servidor SQL, puedes consultar esto:
http://exacthelp.blogspot.co.uk/2012/10/default-order-of-select-statement-in.html
Siempre tuve la impresión de que una consulta con una regla no especificada ''Ordenar por'' ordenaría esto por los resultados según lo especificado en su cláusula where.
Por ejemplo, mi cláusula where dice:
WHERE RESULTS_I_AM_SEARCHING_FOR IN
ITEM 1
ITEM 2
ITEM 3
Me hubiera imaginado que los resultados devueltos para los artículos 1, 2 y 3 estarían en el orden especificado en el donde, sin embargo, este no es el caso. ¿Alguien sabe en qué orden los ordena cuando no están especificados?
¡Gracias y disculpa por la pregunta realmente básica!
Damon
Con SQL Server, si no se especifica ORDER BY
, los resultados se devuelven de la manera más rápida posible .
Por lo tanto, sin una ORDER BY
, no haga suposiciones sobre el orden .
Si no especifica un ORDER BY
, entonces NO HAY PEDIDO definido.
Los resultados se pueden devolver en un orden arbitrario, y eso también puede cambiar con el tiempo.
No hay un "orden natural" o algo así en una base de datos relacional (al menos en todo lo que sé). La única forma de obtener un pedido confiable es especificando explícitamente una cláusula ORDER BY
.
Actualización: para aquellos que todavía no me creen, he aquí dos excelentes publicaciones de blog que ilustran este punto (¡con ejemplos de código!):
- Conor Cunningham (Arquitecto en el equipo de Core SQL Server Engine): Sin cinturón de seguridad - Esperando pedido sin ORDER BY
- Alexander Kuznetsov: sin ORDEN POR, no hay orden de clasificación predeterminado