0

MySQLテーブルに2つの列があります。

bnameとcount

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


 Blah              2

 Blah              2

 huh               3

 lol               1

 huh               3

 huh               3

こんなものが欲しいです。カウント列を作成しましたが、上記の例のように表示する方法がわかりません。count列は現在空です。

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 に答える