2011-10-16 9 views
6

Imagine que tengo una tabla de 'usuarios' con dos campos: 'edad' y 'nombre'. Quiero recuperar los diez primeros usuarios mayores y luego quiero que esta lista de diez esté ordenada por nombre.Obtenga otro pedido después del límite con mysql

¿Es posible hacerlo con mysql?

He intentado esto: (no funciona)

SELECT * FROM users order by age, name limit 10 

Gracias de antemano por su ayuda!

+0

¿Qué significa "no funciona"? –

+0

Hmm He intentado una consulta similar en una tabla similar (creo que sí) y funciona bien para mí ... – Serhiy

Respuesta

17

Utilice una subselección:

SELECT * FROM 
(
    SELECT * 
    FROM users 
    ORDER BY age DESC 
    LIMIT 10 
) AS T1 
ORDER BY name 

El seleccione interior encuentran las 10 filas que desea regresar, y el selectivo exterior los pone en el orden correcto.

+1

¿Para qué sirve el 'T1'? –

+1

@Robert Harvey: es un alias para la tabla derivada. Desafortunadamente, este alias es necesario para apaciguar a MySQL aunque nunca se use :(. Omitirlo da este error: 'Código de error: 1248. Cada tabla derivada debe tener su propio alias' –

+1

No necesita un' AS' antes ? –