2013-03-05 8 views
0

У меня есть два столбца в таблице MySQL:Как подсчитать количество повторяющихся записей в столбце MySQL

BNAME и сосчитать

bname   count   
----------  ---------- 


Blah    2 

Blah    2 

huh    3 

lol    1 

huh    3 

huh    3 

Я хочу что-то вроде этого. Я создал столбец count, но не знаю, как я могу показать его, как в приведенном выше примере. счетчик в настоящее время пуст.

ответ

5

Вы должны использовать старую добрую группу по ...

select bname, count(*) 
from mytable 
group by bname 

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

Если вы хотите сохранить его в таблице также:

UPDATE myTable updated 
JOIN (select bname, count(*) as cnt 
    from mytable 
    group by bname) aggregate 
    ON updated.bname= aggregate.bname 
set `count`= aggregate.cnt 

записные кавычку, я думаю, что вам нужно, что здесь

Это должно установить все строки их соответствующие отсчеты повторения.

SQL Fiddle here

+0

я не понимая. То, что вы дали, правильно, я знаю это и большое спасибо, но у меня нет никаких значений. И я хочу, чтобы значения вводились автоматически. Как новый входит в hname в bname, я хочу, чтобы все рассчитывали на увеличение. :) –

+0

@MiteshMynee проверить его сейчас, он должен работать правильно. – ppeterka

+0

Вот и все! Ты ГЕНИЙ! Благодаря модам ton \ m/Hey вы получите золотую партию @ppeterka: D –

0

Если вы хотите, чтобы выполнить запрос:

select bname, 
     (select count(*) from t t2 where t2.bname = t.bname) as cnt 
from t 

Это даст вам дополнительный столбец на каждой строке.

Если вы хотите, чтобы заполнить значения, используйте update:

update t 
    set count = (select count(*) from t t2 where t2.bname = t.bname) 

Это фактически изменяет значение в таблице графу.

+0

Что такое t и что такое t2? –

+0

@MiteshMynee. , , 't' - ваша оригинальная таблица, а' t2' - псевдоним для нее. –