Как вы ограничиваете группу строками в запросе 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 GROUP BY ROWS, КОТОРЫЕ УЖЕ УСТАЛИ МОЙ ЛИМИТ

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

^^^^ ЗДЕСЬ, ЧТО Я ХОЧУ, ЛИМИТ, ПРИМЕНЯЕМЫЙ К ГРУППАМ

Здесь должен быть какой-то подзапрос или что-то, что я могу сделать, но я не понимаю этого.

Благодарю.

 Mark Byers16 июн. 2012 г., 00:31
Непонятно, что вы пытаетесь сделать. Можете ли вы показать некоторые примеры данных из вашей таблицы и точно показать, какой результат вы хотите. Возможно, вы также можете уменьшить лимит с 25 до 5, чтобы упростить пример.
 Tomas16 июн. 2012 г., 02:12
Я действительно не могу опубликовать свой реальный запрос и набор данных, поскольку он слишком велик, и если на него дан четкий ответ, он должен применяться.

Ответы на вопрос(3)

Решение Вопроса

Это работает для меня:

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

Результаты в:

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

LIMIT следует применять после GROUP BY, поэтому я не понимаю проблему.

 Tomas16 июн. 2012 г., 05:04
Да, это действительно работает. Моя проблема в моем реальном запросе состоит в том, что я группировал более чем одну вещь, что означало, что он разбивал его на отдельные строки.
SELECT * FROM (
  SELECT id, color, size, type FROM clothes WHERE size = 'large' GROUP BY type 
) AS baseview LIMIT 0, 25

чтобы просто сосчитать, сколько их?

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

Я новичок в программировании sql, но это должно вернуть следующее. Таким образом, вы используете 1 строку для каждой комбинации цвет / размер / тип и получаете количество после нее.

Красная большая рубашка 4

Зеленая большая рубашка 6

Зеленые большие штаны 2

и так далее..

Ваш ответ на вопрос