0

我在 MySQL 表中有两列:

bname 和 count

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


 Blah              2

 Blah              2

 huh               3

 lol               1

 huh               3

 huh               3

我想要这样的东西。我已经创建了计数列,但我不知道如何像上面的示例一样显示它。计数列当前为空。

4

2 回答 2

6

您应该使用旧组...

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小提琴在这里

于 2013-03-05T19:05:27.800 回答
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)

这实际上将表中的值更改为计数。

于 2013-03-05T19:11:55.703 回答