Curiosidad en la sintaxis del SELECT
Escrito por Alex Barros Hace poco descubrí una curiosidad de SQL símplemente revisando la documentación del SELECT. Por eso creo que es interesante repasar la sintaxis oficial, para que no se nos escape nada.
-
SELECT
-
[ALL | DISTINCT | DISTINCTROW ]
-
[HIGH_PRIORITY]
-
[STRAIGHT_JOIN]
-
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
-
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
-
select_expr, …
-
[FROM table_references
-
[WHERE where_condition]
-
[GROUP BY {col_name | expr | position}
-
[ASC | DESC], … [WITH ROLLUP]]
-
[HAVING where_condition]
-
[ORDER BY {col_name | expr | position}
-
[ASC | DESC], …]
-
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
-
[PROCEDURE procedure_name(argument_list)]
-
[INTO OUTFILE ‘file_name’ export_options
-
| INTO DUMPFILE ‘file_name’
-
| INTO var_name [, var_name]]
-
[FOR UPDATE | LOCK IN SHARE MODE]]
La curiosidad
Lo que yo desconocía es que es posible ordenar los resultados por dos campos o más. Es decir, hacer la ordenación en función de varios parámetros.
Un ejemplo:
-
SELECT a,b,c FROM mi_tabla WHERE a > 100 ORDER BY b,c
En este Select, los resultados son ordenados según b y c de la mejor forma posible. Puede que ni b ni c queden ordenados estrictamente, sinó que adoptan las mejores posiciones para estar ordenados por ambos a la vez.
Yendo más lejos aún, podemos especificar campo a campo si queremos que se ordene ascendentemente o descendientemente, combinando varios criterios.
-
SELECT a,b,c FROM mi_tabla WHERE a > 100 ORDER BY b ASC,c DESC
Categorias: MySQL |
2 comentarios »










Respeta el copyleft