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を使いたい