みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

mysqlのクエリについて

mysqlのクエリについて

mysqlのバージョンが4.0ですので副問い合わせは利用できません。

select * from a_table;
i| group | no
1| test1 | NULL |
2| test1 | NULL |
3| test2 | NULL |
4| test2 | NULL |
5| test2 | NULL |
6| test2 | NULL |
7| test3 | NULL |
8| test4 | NULL |
このようなテーブルとデータがあったとき
i| group | no
1| test1 | 1 |
2| test1 | 2 |
3| test2 | 1 |
4| test2 | 2 |
5| test2 | 3 |
6| test2 | 4 |
7| test3 | 1 |
8| test4 | 1 |
というようにupdateしたいのですが
どのようなクエリをかけば宜しいのでしょうか。
すみませんがお教えください。

投稿日時 - 2009-12-22 10:16:18

QNo.5539603

困ってます

質問者が選んだベストアンサー

groupは予約語なのでフィールド名に使うのはやめた方がいいですね

まぁこういうインチキくさいのは得意なので、こうするといいでしょう。

set @pre="",@rank=1;
create temporary table temp
select i,@rank:=if(@pre=`group`,@rank+1,1) as no,@pre:=`group` as `group` from a_table
order by no;
replace a_table
select i,`group`,no from temp

結局、mysqlのバージョンをあげるのが最良ということがわかると
思いますけど・・・

投稿日時 - 2009-12-22 11:25:16

お礼

yambejp様
助かりました。
いつも回答ありがとうございます。

投稿日時 - 2009-12-22 12:02:31

ANo.3

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

No1です。
すいません、激しく勘違いしていました。。。OTL

投稿日時 - 2009-12-22 10:43:55

ANo.1

update a_table set `no` = `i`;

で出来ませんか?

投稿日時 - 2009-12-22 10:42:25