Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / выборка всех записей с подсчетом количества записей с одинаковым значением поля / 6 сообщений из 6, страница 1 из 1
26.08.2010, 14:19
    #36813029
kvasabama
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка всех записей с подсчетом количества записей с одинаковым значением поля
Есть таблица:

id | field
---------
1 | a
---------
2 | b
---------
3 | b
---------
4 | a
---------
5 | c
---------
6 | a

нужен запрос, который выдаст следующий результат:

id | field | count
-----------------
1 | a | 3
-----------------
4 | a | 3
-----------------
6 | a | 3
----------------
2 | b | 2
----------------
3 | b | 2
---------------
5 | c | 1

количество можно бы подсчитать с помощью GROUP BY field, но список id будет не полным из-за группировки, а нужен именно отсортированный список id.
...
Рейтинг: 0 / 0
26.08.2010, 14:24
    #36813043
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка всех записей с подсчетом количества записей с одинаковым значением поля
Код: plaintext
1.
select a.id, a.field , (select count(*) from ___  b where a.field = b.field) as count
from table a

как то так.
...
Рейтинг: 0 / 0
26.08.2010, 15:35
    #36813304
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка всех записей с подсчетом количества записей с одинаковым значением поля
kvasabamaа нужен именно отсортированный список id.Как я понял, отсортированный по field?

Попробуйте варианты
Код: plaintext
1.
2.
3.
4.
select id, field, cou
from myTab join (select field f, count(*) cou from myTab group by field) t
  on (myTab.field = t.f)
order by field

Код: plaintext
1.
2.
3.
4.
5.
select id, field , 
   @cou := if(@oldf = field, @cou, (select count(*) from myTab b where a.field = b.field)) cou,
   @oldf := field
from myTab a, (select @cou :=  0 , @oldf := null) t
order by field

Второй вариант - как у ScareCrow, с попыткой воспользоваться старым значением для того же field (не пересчитывать каждый раз).

Для обоих вариантов неплохо бы индекс по field
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
03.06.2014, 11:57
    #38659810
выборка всех записей с подсчетом количества записей с одинаковым значением поля
SELECT t1.id , t1.field , COUNT( t1.field) AS b_count
FROM table_name as t1
LEFT JOIN table_name AS t2 ON t1.field = t2.field
GROUP BY t1.id
...
Рейтинг: 0 / 0
03.06.2014, 12:18
    #38659853
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка всех записей с подсчетом количества записей с одинаковым значением поля
Неправильно.
И вообще
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
18.10.2016, 12:19
    #39328879
Abra Kadabra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка всех записей с подсчетом количества записей с одинаковым значением поля
неясно. туманно все
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / выборка всех записей с подсчетом количества записей с одинаковым значением поля / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]