Problema:
Debe mostrar los registros de una tabla determinada ordenados por dos columnas.
Ejemplo:
Nuestra base de datos tiene una tabla llamada employee
con las siguientes columnas:id
, first_name
, last_name
y salary
.
id | nombre | apellido | salario |
---|---|---|---|
1 | Lisa | Ulmán | 3000 |
2 | Ada | Muller | 2400 |
3 | Tomás | Verde | 2400 |
4 | Miguel | Muller | 3000 |
5 | María | Verde | 2400 |
Vamos a mostrar toda la información de cada empleado, pero ordenemos los registros según el salario en orden descendente primero y luego por apellido en orden ascendente.
Solución:
SELECT id, first_name, last_name, salary FROM employee ORDER BY salary DESC, last_name;
Esta consulta devuelve registros ordenados según dos columnas:salario y apellido .
id | nombre | apellido | salario |
---|---|---|---|
4 | Miguel | M uller | 3000 |
1 | Lisa | T soy | 3000 |
3 | Tomás | G reen | 2400 |
5 | María | G reen | 2400 |
2 | Ada | M uller | 2400 |
Discusión:
Si desea seleccionar registros de una tabla pero desea verlos ordenados según dos columnas, puede hacerlo con ORDER BY
. Esta cláusula viene al final de su consulta SQL.
Después del ORDER BY
palabra clave, agregue el nombre de la columna por la que le gustaría ordenar los registros primero (en nuestro ejemplo, salario). Luego, después de una coma, agregue la segunda columna (en nuestro ejemplo, last_name
). Puede modificar el orden de clasificación (ascendente o descendente) por separado para cada columna. Si desea usar un orden ascendente (de menor a mayor), puede usar el ASC
palabra clave; Sin embargo, esta palabra clave es opcional, ya que ese es el orden predeterminado cuando no se especifica ninguno. Si desea utilizar un orden descendente, coloque el DESC
palabra clave después de la columna correspondiente (en el ejemplo, usamos un orden descendente para el salary
columna).
En nuestro ejemplo, primero ordenamos el resultado por salario en orden descendente (salarios más altos a los más bajos) y luego por apellido en orden ascendente dentro de los registros ya ordenados.