Después de que una consulta haya producido una tabla de salida (después de que se haya procesado la lista de selección), se puede ordenar opcionalmente. Si no se selecciona ordenar, las filas se devolverán en un orden no especificado. El orden real en ese caso dependerá de los tipos de planes de exploración y unión y del orden en disco, pero no se debe confiar en él. Un orden de salida en particular solo se puede garantizar si el paso de ordenación se elige explícitamente.
La cláusula ORDER BY especifica el orden de clasificación:
SELECT select_list FROM table_expression ORDER BY column1 ...]
columna 1, etc., consulte seleccionar columnas de lista. Estos pueden ser el nombre de salida de una columna (consulte la sección 7.3.2) o el número de una columna. Algunos ejemplos:
SELECT a, b FROM table1 ORDER BY a;SELECT a + b AS sum, c FROM table1 ORDER BY sum;SELECT a, sum(b) FROM table1 GROUP BY a ORDER BY 1;
Como extensión del estándar SQL, PostgreSQL también permite ordenar por expresiones arbitrarias:
SELECT a, b FROM table1 ORDER BY a + b;
También se permiten referencias a nombres de columna de la cláusula FROM que no estén presentes en la lista de selección:
SELECT a FROM table1 ORDER BY b;
Pero estas extensiones no funcionan en consultas que involucran UNION, INTERSECT o EXCEPT, y no son portables a otras bases de datos SQL.
Cada especificación de columna puede ir seguida de un ASC o DESC opcional para establecer la dirección de ordenación en ascendente o descendente. El orden ASC es el predeterminado. El orden ascendente pone primero los valores más pequeños, donde» menor » se define en términos del operador <. De manera similar, el orden descendente se determina con el operador >.
Si se especifica más de una columna de ordenación, las entradas posteriores se utilizan para ordenar filas que son iguales en el orden impuesto por las columnas de ordenación anteriores.