Учитывая этот образец данных:
CREATE TABLE t
(`a` int, `b` varchar(1))
;
INSERT INTO t
(`a`, `b`)
VALUES
(1, 'a'),
(2, 'c'),
(2, 'c'),
(1, 'a'),
(1, 'b'),
(2, 'd')
;
вы сначала должны получить счетчик для каждого с запросом, как это :
SELECT
a, b,
COUNT(*) AS amount
FROM
t
GROUP BY
a, b
Тогда вы можете нас e этот запрос как подзапрос, чтобы получить строки, где определенный столбец содержит максимум. Там хорошая статья об этом в руководстве: The Rows Holding the Group-wise Maximum of a Certain Column
Выбор, например, последний метод, описанный в указанной статье, окончательный запрос будет таким:
SELECT sq1.a, sq1.b FROM
(
SELECT
a, b,
COUNT(*) AS amount
FROM
t
GROUP BY
a, b
) sq1
LEFT JOIN
(
SELECT
a, b,
COUNT(*) AS amount
FROM
t
GROUP BY
a, b
) sq2 ON sq1.a = sq2.a AND sq1.amount < sq2.amount
WHERE sq2.amount IS NULL;
С этим результатом:
+------+------+
| a | b |
+------+------+
| 1 | a |
| 2 | c |
+------+------+
Count (ID) в общем, порядке по возрастанию группы по идентификатору и limit2 –
You для этого нужно использовать 'Window'. К сожалению, MySQL не поддерживает их. Другой способ - использовать подзапрос в качестве столбца. –