[前][次][番号順一覧][スレッド一覧]

mysql:11287

From: Akira Kuroda <Akira Kuroda <akuroda@xxxxxxxxxx>>
Date: Mon, 28 Mar 2005 20:56:43 +0900
Subject: [mysql 11287] Re: _[mysql_11190]_updat e文の_set句に集合関数co_untを使いたい

黒田と申します.

ずいぶん前の話題ですが...



On Fri, 18 Mar 2005 14:26:19 +0900, Manabu Tatesawa
<mabu@xxxxxxxxxx> wrote:
> いつもお世話になっております。館澤と申します。
> 
> update文の set 句に集合関数countを使いたいのですが
> どうすれば動作させることが出来るのか悩んでいます。
> 
> 具体的には下のようなクエリーを考えています。
> 
> 人名テーブル TName に
> 
>   name      etc
>   --------  ---------
>   Satou     AAA
>   Tanaka    BBB
>   Satou     CCCC
>   Suzuki    DD
> 
> が入っていて、
> 同名の人数をカウントしていある人名サマリーテーブル TCount
> 
>   name     cnt
>   -------  ---------
>   Satou    2
>   Suzuki   1
>   Katou    0
> 
> を更新するクエリーを考えています。
> #TCountに存在しない名前はカウントしなくて良いです
> 
> そこで下のようなクエリーを作ってみたのですが
> 
>    update TCount c, TName n
>       set c.cnt = count(*)
>     where c.name  = n.name 
>     group by n.name 
> 
> "ERROR 1064 : group by name付近に不具合あり" という旨の
> エラーが出て、動作しません。


4.1.x ではこういう SQL で更新できました.
 update TCount c, (select name, count(*) as cnt from tname group by name) n
     set c.cnt = n.cnt
   where c.name  = n.name


それ以前であれば 2段階に分けるしかないと思います.
1. tname と tcount を join してマッチするレコードを tcount から delete
2. tname と tcount を join して count を計算して tcount に insert


--
KURODA Akira (akuroda@xxxxxxxxxx)

[前][次][番号順一覧][スレッド一覧]

     11190 2005-03-18 14:26 [Manabu Tatesawa <mab] update文のset句に集合関数countを使いたい
->   11287 2005-03-28 20:56 ┗[Akira Kuroda <akurod] Re: _[mysql_11190]_updat e文の_set句に集合関数co_untを使いたい
     11288 2005-03-28 21:42  ┗[Manabu Tatesawa <mab] Re: _[mysql_11190]_updat  e文の_set句に集合関数countを使いたい