こんにちは。個人で頑張ったのですが、どうしても困難な問題にぶつかったので、SQLに詳しい方、アドバイスしていただけるとうれしいです。
mysqlで、あるテーブルのデータを並べ替えたうえで、オートインクリメントのidを一意に割り振りたいと思います。
「club」テーブルにname,dateという2つのカラムがあります。
nameは個人名が入力されており、dateは個人に関する日付を入れています。
今、このテーブル内にあるデータをまずdateでソートして、次にnameでソートし、その順番でidを割り振りたいと思います。
解決方法をgoogleで調べましたが、そもそもオートインクリメントするIDカラムはテーブル作成時に付与するのが普通のようで、テーブルが作成された後に付与するのはあまり考えられないケースのようです。既存のテーブルをソートしてからIDを付与する方法となると、さがしても資料を見つけられませんでした。
そこで自分で解決方法を模索することにしました。
まず最初に、SQLを分けて考えました。
ソートするSQL文は
select * from club order by date asc,name asc;
オートインクリメントするidを追加するSQL文は
alter table club add id int not null primary key auto_increment;
であるので、この2つを組み合わせたらうまくできるのかと思っています。
しかし
alter table club add id int not null primary key auto_increment where select * from club order by date asc,name asc;
や
alter table club add id int not null primary key auto_increment order by date asc, name asc;
などで試してもうまくいきません。
select * from club order by date asc,name asc;
alter table club add id int not null primary key auto_increment;
と連続で通しても、最初のバラバラデータにIDがばらばらに付加されるだけでした。
いよいよ方法を思いつかなくなってしいました。
詳しい方、正しい方法をご教示願います。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。