Ordenar registros

Categories:

Cuando realizamos una consulta los registros obtenidos no tienen un orden definido.
Si son pocos registros y / o somos los únicos que trabajamos con los datos es posible que no represente ningún inconveniente, pero si los datos los va a consultar alguien más, es conveniente utilizar un criterio para ordenar los datos.

ORDER BY

Con ORDER BY podemos ordenar los registros obtenidos de una consulta por una o varias columnas en el orden que designemos.

-- Seleccionar id y título de la tabla publicaciones
-- ordenar por la columna título de manera descendente
-- Z...A

SELECT id, titulo FROM publicaciones ORDER BY titulo DESC;

-- Seleccionar id y título de la tabla publicaciones
-- ordenar por la columna título de manera ascendente
-- A...Z

SELECT id, titulo FROM publicaciones ORDER BY titulo ASC;

-- Si no se especifica la manera en que se quieren ordenar 
-- los registros se va a realizar de manera ascendente
-- A...Z

SELECT id, titulo FROM publicaciones ORDER BY titulo;

ORDER BY título DESC

ORDER BY título ASC

ORDER BY título

NOTA:
Al ordenar por columnas de texto no se hace distinción entre mayúsculas y minúsculas.

Si no se especifica la manera en que se quieren ordenar los registros – ASC, DESC – se ordenará de manera ascendente – ASC -.

Si los resultados se van a ordenar por varias columnas MySQL primero ordena los resultados por la primer columna y, dentro de esos resultados ordena los resultados por la segunda columna – si son mas columnas seguiría por la tercera, etc -.

-- Seleccionar id , usuario_id y título de la tabla publicaciones
-- ordenar por la columna usuario_id de manera ascendente
-- A...Z
-- Una vez que se ordenaron los registros por
-- esta columna ordenar los
-- registros utilizando la columna título
-- también de manera ascendente.
-- El segundo ordenamiento es más visible en los registros que tienen
-- el mismo valor similares en la columna usuario_id


SELECT id, usuario_id, titulo FROM publicaciones ORDER BY usuario_id ASC, titulo ASC;

-- Seleccionar id, usuario_id y  título de la tabla publicaciones
-- ordenar por la columna usuario_id de manera ascendente
-- A...Z
-- Una vez que se ordenaron los registros por
-- esta columna ordenar los
-- registros utilizando la columna título
-- en este caso de manera descendente.
-- El segundo ordenamiento es más visible en los registros que tienen
-- el mismo valor en la columna usuario_id

SELECT id, usuario_id, titulo FROM publicaciones ORDER BY usuario_id ASC, titulo DESC;

ORDER BY usuario ASC titulo ASC

ORDER BY usuario ASC titulo DESC

Filtrar registros
El utilizar ORDER BY no interfiere con el filtrado de datos – WHERE -, se pueden filtrar los datos y, una vez filtrados se ordenan.

-- Seleccionar id, usuario_id, titulo, vistas, votos
-- de la tabla publicaciones
-- donde la columna usuario_id
-- tenga un valor asignado
-- Ordenar por la columna titulo
-- de manera ascendente

SELECT id, usuario_id, titulo, vistas, votos
FROM publicaciones 
WHERE usuario_id IS NOT NULL
ORDER BY titulo ASC;

-- Seleccionar id, usuario_id, titulo, vistas, votos
-- de la tabla publicaciones
-- donde el valor de la columna votos
-- sea menor a 50.
-- Ordenar por la columna votos
-- de manera descendente (de la publicación
--  más votada a la menos votada).
-- Una vez hecho esto, ordenar por la columna
-- titulo de manera ascendente (A...Z).

SELECT id, usuario_id, titulo, vistas, votos
FROM publicaciones 
WHERE votos < 50
ORDER BY votos DESC, titulo ASC;

-- Seleccionar id, usuario_id, titulo, vistas, votos
-- de la tabla publicaciones
-- donde el valor de la columna vistas
-- sea mayor a 20.
-- Ordenar por la columna vistas
-- de manera descendente (de la publicación
--  con más vistas a la publicación con menos vistas).
-- Una vez hecho esto, ordenar por la columna
-- titulo de manera ascendente (A...Z).

SELECT id, usuario_id, titulo, vistas, votos
FROM publicaciones 
WHERE vistas > 20
ORDER BY vistas DESC, titulo ASC;

Filtrar y ordenar registros 01

Filtrar y ordenar registros 02

Filtrar y ordenar registros 03

Al utilizar ORDER BY tienes más control al momento de presentar los datos.