mysql 4.x についての質問です。カラムの順番を変更するにはどうかけばいいのでしょうか?

http://dev.mysql.com/doc/refman/4.1/ja/alter-table.html
を見ると、簡単にできそうな気がします。
id,a,b,c として、id,b,c,a にする簡単なSQL文の提示お願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/07/01 11:02:12
  • 終了:2010/07/08 11:05:04

回答(2件)

id:JULY No.1

JULY回答回数966ベストアンサー獲得回数2472010/07/01 12:01:52

ポイント35pt

MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.5.3 CREATE TABLE 構文

MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.5.5 RENAME TABLE 構文

テーブル名を test_table として、

create tmp_table select id, b, c, a from test_table;
drop table test_table;
rename table tmp_table to test_table;

かな。

id:kaiketsu

after なんとかってのはできないのでしょうか

2010/07/01 13:15:34
id:iww No.2

いわわ回答回数101ベストアンサー獲得回数102010/07/01 21:00:49

ポイント35pt

テーブル内のカラムの移動方法|ASTRODEO

ALTER TABLE hoge CHANGE a a INT AFTER c;

みたいな感じで出来ます。

aの型を正確に書く必要があります。NOT NULLとかAUTO_INCREMENTがあるなら一緒に書くのを忘れずに。

  • id:JULY
    > after なんとかってのはできないのでしょうか

    質問文で示されていた、alter table のマニュアルを見た限りでは、出来なさそうです。
    単に名前を付け替えるなら、alter table テーブル名 change .... とか
    alter table テーブル名 modify ... でできそうですが、その場合、先に入っている
    データとカラム名の関係が変わってしまいます。

    一般論として、カラムの順序は SQL 文の中で指定すべきで、省略されている時の順序
    (select * from テーブル名、insert into テーブル名 values ( .... ))を仮定
    すべきではない、ということも有ります。元のテーブルのままでも、

    select id, b, c, a from テーブル名

    とすれば、意図した順序で表示されますし、

    insert into テーブル名 (id, b, c, a) values ( .... )

    とすれば、位置したカラムに値を入れる事が出来ます。

    省略した時のカラムの順序は、恐らくは、システム側のデータとして保存されていて、
    それを適切にいじれば、意図した順序に変更出来るだろう、とは思いますが、それ
    ぐらいだったら、テーブルを作り直した方が簡単だと思います。


  • id:JULY
    スミマセン、alter table テーブル名 change を誤解していました....

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません