2009-07-19 41 views
6

Tengo una tabla con la siguiente estructura:¿Cómo puedo usar MAX y LIMIT juntos en MySQL?

ID | Color

1 | rojo
2 | azul
3 | amarillo
8 | púrpura
10 | verde
.
.
.
100 | amarillo

Me gustaría poder tomar el valor MAX ID para las primeras 5 filas.

Por ejemplo, me gustaría hacer algo así: SELECT MAX (ID) de la tabla LIMIT 5

esperando que esto devolverá el valor 10

Pero, MySQL sigue regresando 100 ... es como MySQL ni siquiera ve la cláusula LIMIT.

Respuesta

19

Parece que desea seleccionar los 5 registros principales (ordenados por ID) y luego obtener el valor más alto de ese grupo? Si es así:

SELECT 
    MAX(ID) 
FROM 
    ( 
     SELECT ID 
     FROM YourTable 
     ORDER BY ID 
     LIMIT 5 
    ) as T1 
+1

es probable que no necesite "seleccionar *"; solo "seleccionar ID" debería ser suficiente? (No estoy seguro de que lo haga, pero tal vez seleccionar solo el (los) campo (s) que necesita (n) podría reducir la cantidad de memoria requerida, lo cual siempre es bueno) –

+0

¡Funciona perfectamente! Muchas gracias. –

+0

Sí, esto debería ser 'SELECCIONAR ID' – gahooa

1

Usar una subselección:

SELECT MAX(id) FROM (SELECT id FROM table LIMIT 5); 

Eso no podría ser bastante SQL válida, pero que debe darle una idea general.

+4

SQL no válido. Necesita un alias en cada tabla derivada + debe tener un orden de espera para obtener resultados "definidos". – gahooa

9

Hay una mejor manera de hacer esto que subselección:

SELECT id FROM table LIMIT 4,1 

Consigue una fila pero evita 4 primera .. Agregar 'ORDER BY id' si se trata de tabla MyISAM.

+2

Esto funciona para mí. Creo que esta respuesta está subestimada. –

+1

Esto funciona si sabes cuántas filas hay. Si supera el recuento de filas, la consulta devuelve NULL. Lo necesitaba para lotes, pero la versión máxima es más adecuada en mi caso. – talereader

0

Si usted tiene una tabla con la siguiente estructura

ID | Color 

1 | red 
2 | blue 
3 | yellow 
8 | purple 
10| green 
. 
. 
. 
100|yellow 

El valor MAX ID para los primeros 5 (AUTO_INCREMENT?) Los valores es 5. Por cierto, el valor MAX ID para los primeros 6 valores es 6 . Y 100 para todos los valores. Saludos cordiales.

Cuestiones relacionadas