2011-02-10 10 views
6

Si quiero seleccionar valores mínimo y máximo de una tabla completa que pueden utilizar esta:min SELECT y el valor máximo de una parte de una tabla en MySQL

SELECT min(price) as min_price, max(price) as max_price FROM `prices` 

Pero cómo seleccionar los valores mínimo y máximo de solo una parte de una mesa? Por ejemplo, tengo 30 filas en una tabla. Quiero seleccionar valores mínimos y máximos de las primeras diez filas, a continuación, a partir de segundos diez filas y luego formar la última algo 10.

He tratado como

SELECT min(price) as min_price, max(price) as max_price FROM `prices` LIMIT 0,10 

pero esto no funcionó.

¿Cómo puedo resolver este problema con un mínimo de consultas?

+1

Define las "primeras diez filas". ¿Qué campo estás usando para determinar el orden de las filas? – JNK

+0

verifique mi respuesta para obtener un rango arbitrario de filas – reggie

Respuesta

13
SELECT MIN(PRICE) AS MinPrice, MAX(PRICE) AS MaxPrice FROM (SELECT PRICE FROM PRICES LIMIT 10) tmp; 

por otra parte, MySQL tiene una función interesante que le permitirá devolver un rango arbitrario de filas (por ejemplo, devolver filas 10-20). Esto es muy útil para mostrar páginas de registros:

SELECT column FROM table 
LIMIT 10 OFFSET 20 

La consulta anterior devolverá las filas 20-30.

Así que en resumen, para volver filas de 20 a 30 en el caso de la consulta, que utilice:

SELECT MIN(PRICE) AS MinPrice, MAX(PRICE) AS MaxPrice 
FROM (SELECT PRICE FROM PRICES LIMIT 10 OFFSET 20); 

necesita cambiar el valor de desplazamiento para especificar el punto de inicio de su gama.

+0

¡Gracias! Eso es exactamente lo que necesito. La consulta final fue SELECCIONAR min (t1.price) como min_price, max (t1.price) como max_price FROM (SELECCIONAR precio FROM 'ko_base_kk_old' ORDER BY precio LIMITE 0,10) como t1 –

+0

La he actualizado más para su comprensión. y eres bienvenido :) – reggie

6

has necesitado:

SELECT min(price) as min_price, max(price) as max_price FROM 
    (SELECT price FROM `prices` LIMIT 0,10); 
+0

oops tuve la misma respuesta :) – reggie

+0

incluso las palabras clave OFFSET funcionan bien en este escenario :) – reggie

+0

@reggie: Es verdad. Incluso podría usar un 'orden por' en el 2do 'SELECCIONAR'. Solo necesita saber que puede ** buscar ** cualquier lista de 'precio' en el 2do y tomar solo el 'min' y' max' gracias a la 1ª selección. Parece bastante lógico. De todos modos, como OP no respondió a @JNK, no se puede saber si se requiere 'OFFSET' aquí. – Shikiryu

Cuestiones relacionadas