2012-06-15 9 views
5

Hay otras preguntas aquí que suenan similares pero no lo son. Tengo una consulta que devuelve un grupo de filas con el grupo por y quiero aplicar un límite al grupo total por filas, no el total de filas utilizadas para crear los grupos.¿Cómo se limita el grupo por filas en una consulta de mysql?

ID TYPE  COLOR  SIZE 
---------------------------------------- 
1  Circle  Blue   Large 
2  Circle  Red   Large 
3  Square  Green  Large 
4  Circle  Purple  Large 
5  Circle  Blue   Small 
6  Circle  Yellow  Medium 
7  Circle  Black  Large 
8  Oval  Blue   Large 
9  Circle  Gray   Small 
10 Triangle Black  Large 
11 Star  Green  Large 
12 Triangle Purple  Large 

SELECT size, type FROM clothes WHERE size = 'large' GROUP BY type LIMIT 0, 5 

TYPE  SIZE  ROWS 
---------------------------  
Circle  Large  4 
Square  Large  1 

^^^^ 2 GRUPO POR filas que ya se ha agotado el límite de mi

TYPE  SIZE  ROWS 
---------------------------  
Circle  Large  4 
Square  Large  1 
Oval  Large  1 
Triangle Large  2 
Star  Large  1 

^^^^ Esto es lo que queremos, límite aplicados A LOS GRUPOS DE

Debe haber alguna subconsulta o algo que puedo hacer aquí, pero no me estoy explicando.

Gracias.

+2

No está claro lo que estás tratando de hacer. ¿Puede mostrar algunos datos de ejemplo de su tabla y mostrar exactamente el resultado que desea? Quizás también pueda reducir el límite de 25 a 5 para simplificar el ejemplo. –

+0

Realmente no puedo publicar mi consulta real y conjunto de datos, ya que es demasiado grande, si esto se responde limpiamente debe aplicarse. – Tomas

Respuesta

4

Esto funciona para mí:

SELECT type, size, COUNT(*) AS rows 
FROM clothes 
WHERE size = 'large' 
GROUP BY type 
LIMIT 0, 5 

Resultados en:

type  size rows 
------------------------ 
Circle Large  4 
Oval  Large  1 
Square Large  1 
Star  Large  1 
Triangle Large  2 

LIMIT debe aplicarse después de GROUP BY, por lo que no entiendo el problema.

+0

Sí, esto de hecho funciona. Mi problema en mi consulta real es que estaba agrupando por más de una cosa, lo que significaba que estaba dividiéndolo en filas separadas. – Tomas

3
SELECT * FROM (
    SELECT id, color, size, type FROM clothes WHERE size = 'large' GROUP BY type 
) AS baseview LIMIT 0, 25 
0

¿qué tal simplemente contar cuántos hay?

select color, size, type, count(id) from clothes where size = 'large' group by size, type, color; 

Soy nuevo a SQL programación pero esto debe devolver la siguiente, de esa manera se utiliza la línea 1 para cada tamaño combinación de tipo de color// y obtener un conteo de la cantidad después de ella.

gran camisa roja 4

gran camisa verde 6

pantalones verdes grandes 2

y así sucesivamente ...

Cuestiones relacionadas