|
|
|
| Есть таблица следующего типа
+-----+
| id |
+-----+
| 1 |
| 5 |
| 5 |
| 3 |
| 4 |
| 4 |
| 4 |
+-----+
|
Надо выбрать id которое повторяется максимальное количество раз.
Решил это так
select id, count(id) as max_count from table group by id having count(id)>1 order by max_count desc limit 1;
|
выдаст
+----+-----------+
| id | max_count |
+----+-----------+
| 4 | 3 |
+----+-----------+
|
Можно как нибудь составить запрос, чтобы результирующая запись была одна, т.е. без limit? Ну, т.е. результирующих записей может быть и несколько в случае, если какой-то id повторяется одинаковое количество раз. Например в случае
+-----+
| id |
+-----+
| 5 |
| 5 |
| 5 |
| 3 |
| 4 |
| 4 |
| 4 |
+-----+
|
Надо получить
+----+-----------+
| id | max_count |
+----+-----------+
| 5 | 3 |
| 4 | 3 |
+----+-----------+
|
| |
|
|
|
|
|
|
|
для: WebTech
(13.01.2006 в 17:29)
| |
select id, count(id) as 'max_count'
from nametable
group by id
having count(*) > 1
|
| |
|
|
|
|
|
|
|
для: Boss
(13.01.2006 в 18:02)
| | Так будут просто выбраны id, которые повторяются и количество повторений. А мне надо выбрать id, которые повторяются максимальное количество раз. | |
|
|
|
|
|
|
|
для: WebTech
(13.01.2006 в 18:27)
| | - | |
|
|
|
|
|
|
|
для: WebTech
(13.01.2006 в 18:27)
| | А почему limit не хочешь использовать?
select id, count(id) as 'max_count'
from nametable
group by id
order by max_count desc limit 1
|
| |
|
|
|
|
|
|
|
для: Boss
(13.01.2006 в 20:26)
| | Потому, что максимальных значений может быть несколько и сколько - заранее неизвестно. Непонятно тогда сколько подставлять в LIMIT. | |
|
|
|
|
|
|
|
для: WebTech
(13.01.2006 в 17:29)
| | Вложенные запросы можно использовать (версия MySQL выше 4.1)? | |
|
|
|
|
|
|
|
для: cheops
(13.01.2006 в 18:58)
| | MySQL 4.1.7, можно использовать. | |
|
|
|
|
|
|
|
для: WebTech
(13.01.2006 в 19:02)
| | Попробуйте следующий запрос
SELECT id, COUNT(id) AS num
FROM wet
GROUP BY id
HAVING num = (SELECT COUNT(id) AS total
FROM wet
GROUP BY id
ORDER BY total DESC
LIMIT 1)
|
| |
|
|
|
|
|
|
|
для: cheops
(14.01.2006 в 13:35)
| | Да, это работает как раз так, как надо.
Большое спасибо! :-) | |
|
|
|