2011-04-11 10 views
11

Cuando ejecuto una consulta como SELECT col1, col2, col3 FROM table, se ordena por la clave primaria ascendente.¿Hay un "orden predeterminado por columna" en SQL Server?

Me pregunto si hay una manera de especificar una columna diferente, como ORDER BY CreatedDate DESC si no hay una cláusula Order By?

lo dudo (ya que sería muy poco intuitivo, pero pregunto de todos modos.

Respuesta

24

No. cualquier pedido que se ve es un artefacto de la estrategia del optimizador de consultas. la teoría relacional prohíbe que haya ningún orden implícito de cualquier conjunto de datos.

Ni siquiera se puede contar el mismo pedido la próxima vez para la misma consulta porque la estrategia del optimizador depende del contexto y la d ata que podría cambiar.

+3

Interesante, la teoría relacional de hecho especifica que 'un conjunto es una colección no ordenada de elementos únicos, no duplicados'. –

12

Incluso el comportamiento que está viendo (ordenada por pk) no está garantizada por la norma. Siempre se debe especificar el orden que desee cosas para que sea recuperado.

+3

Pero solo si importa lo que podría no ser cierto. – dkretz

+0

@le dorfier: eso es correcto, si no le importa el pedido, entonces no hay ninguna razón para usar una cláusula ORDER BY. –

Cuestiones relacionadas