2010-09-05 23 views
14

Bienvenido,"Ordenar por desc" en orden inverso?

Me pregunto si es posible invertir los datos devueltos en la clasificación "orden por desc", pero quiero que los datos en orden inverso.

Por ejemplo, tengo tabla con valores

ID 
1 
2 
3 
4 

y hago

Ordenar por ID LÍMITE ASC 3 llegué

1 
2 
3 

cuando lo haga Ordenar por límite ID DESC 3 obtengo

4 
3 
2 

me gustaría tener

3 
2 
1 

así que me gustaría a la orden por ASC, pero revers resultados. Siempre he estado haciendo esto en PHP usando array_reverse, pero hoy quiero preguntarte. Maybye estoy equivocado y puedo hacer esto solo en Mysql. Saludos

+1

posible duplicado de [B Es una forma de buscar las últimas 4 filas de un conjunto de resultados usando mysql] (http://stackoverflow.com/questions/2980220/best-way-to-fetch-last-4-rows-from-a-result-set-using -mysql) –

Respuesta

5

Usted puede recuperar las tres primeras filas utilizando una subconsulta y luego invertir el orden de estas filas en una consulta externa:

SELECT * 
FROM 
(
    SELECT * 
    FROM yourtable 
    ORDER BY ID 
    LIMIT 3 
) T1 
ORDER BY ID DESC 
0

Se podría utilizar un exterior SELECT para invertir el orden:

SELECT * 
FROM (
    SELECT … 
    ORDER BY id ASC 
    LIMIT 3 
) sub 
ORDER BY id DESC 
25
SELECT * 
FROM (
    SELECT ... 
    FROM ... 
    ORDER BY ID ASC 
    LIMIT 3 
) AS sq 
ORDER BY ID DESC 

Creo que funciona en dos pasos. Primero ejecuta la consulta interna: selecciona 3 registros con los ID más bajos. Luego, en la consulta externa, los ordena en orden descendente.

+0

Eso es genial. – marc

+0

¡Amigo, eres increíble! – user3284463

+0

¿Cómo funciona esta consulta? ¿Puedes explicar o proporcionar un enlace a este – user3284463

4

No, no estás equivocado. No hay diferencia para una cantidad razonable de datos. Array_reverse está bien.
Eso no es algo de lo que deba preocuparse demasiado. Sólo tiene que usar lo que quiera más - para facilitar la lectura u otras razones subjetivas

2

Usted puede hacer esto con una consulta substitución:

SELECT * FROM 
    (SELECT * FROM myTable ORDER BY idMyTable LIMIT 0, 3) AS r 
ORDER BY r.idMyTable DESC 

Recursos:

+0

Página de recursos no encontrada :( – user3284463

Cuestiones relacionadas