with multiple many columns mysql sql sql-order-by

mysql - multiple - SQL ORDER BY columnas mĂșltiples



php mysql distinct multiple columns (5)

Depende del tamaño de su base de datos.

SQL se basa en la teoría SET: no se utiliza un orden inherente al consultar una tabla.

Entonces, si tuviera que ejecutar la primera consulta, primero ordenaría por precio de producto y luego por nombre de producto, SI hubiera duplicados en la categoría de precios, digamos $ 20 por ejemplo, luego ordenaría esos duplicados por sus nombres, por lo tanto siempre manteniendo que cuando ejecuta su consulta siempre devolverá el mismo conjunto de resultados en el mismo orden.

Si tuviera que ejecutar la segunda consulta, solo se ordenaría por el nombre, por lo que si hubiera dos productos con el mismo nombre (por alguna extraña razón), no tendrían un orden garantizado después de ejecutar la consulta.

Esta pregunta ya tiene una respuesta aquí:

Quiero ordenar la tabla de mis productos por dos columnas: prod_price y prod_name .

SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price, prod_name;

¿Cómo se hace la clasificación aquí? Creo que sucede primero por prod_price y luego por prod_name . Además, ¿en qué se diferencia la consulta anterior de esta?

SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_name;

Mi tabla de productos es la siguiente:

CREATE TABLE Products ( prod_id char(10) NOT NULL , vend_id char(10) NOT NULL , prod_name char(255) NOT NULL , prod_price decimal(8,2) NOT NULL , prod_desc text NULL );


La clasificación en un ORDER BY se realiza por la primera columna, y luego por cada columna adicional en la declaración especificada.

Por ejemplo, considere los siguientes datos:

Column1 Column2 ======= ======= 1 Smith 2 Jones 1 Anderson 3 Andrews

La consulta

SELECT Column1, Column2 FROM thedata ORDER BY Column1, Column2

primero se ordenaría por todos los valores en Column1

y luego ordene las columnas por Column2 para producir esto:

Column1 Column2 ======= ======= 1 Anderson 1 Smith 2 Jones 3 Andrews

En otras palabras, los datos se ordenan primero en el orden de la Column1 , y luego cada subconjunto ( Column1 filas de la Column1 que tienen 1 como su valor) se ordenan por orden de la segunda columna.

La diferencia entre las dos declaraciones que publicó es que las filas en la primera se clasificarían primero por prod_price (orden de precio, de menor a mayor), y luego por orden de nombre (lo que significa que si dos artículos tienen el mismo precio) uno con el valor alfa más bajo para el nombre se mostraría primero), mientras que el segundo se ordenaría solo en el orden de los nombres (lo que significa que los precios aparecerían en orden en función del prod_name sin tener en cuenta el precio).


Los resultados se ordenan por la primera columna, luego la segunda, y así sucesivamente para tantas columnas como incluye la cláusula ORDER BY. Si desea ordenar los resultados en orden descendente, su cláusula ORDER BY debe usar la palabra clave DESC directamente después del nombre o el número de la columna correspondiente.

Echa un vistazo a este ejemplo

SELECT first_name, last_name, hire_date, salary FROM employee ORDER BY hire_date DESC,last_name ASC;

Se ordenará en sucesión. Ordene primero la fecha de contratación y luego LAST_NOMBRE por fecha de contratación.


Sí, la clasificación es diferente.

Los elementos de la lista ORDER BY se aplican en orden.
Los artículos posteriores solo ordenan a los compañeros a la izquierda del paso anterior.

¿Por qué no lo intentas ?


Sí, la clasificación procede de manera diferente. en el primer escenario, las órdenes basadas en la columna 1 y además de ese proceso más adelante al ordenar el colmun2 basado en la columna 1. En el segundo escenario, las órdenes se basan completamente en la columna 1 ... proceda con un ejemplo simple ... con rapidez..