• ベストアンサー

新規テーブルを作成した後、指定レコード数まで番号を

はじめまして、初心者ですのため説明不足がありましたら申し訳ございせん。。 ■質問内容 MySQLを使ってます。 新規テーブルを作ったあと、以下のような事をしたいのですが、 そのSQL文を教えていただけないでしょうか? テーブル名:test フィールド id | name という新規テーブルがあった際 フィールド id | name 1 2 3 : : 100 のように、 フィールドIDだけに対して指定した100番まで番号を振りたいのですが、 そのSQL文を教えていただけないでしょうか? よろしくお願い致します。

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

  • ベストアンサー
  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.3

#1 です。 >エクセルで100番までつくってCSVでmysql DBにインポートする いや、私の方法はSQL文を生成して一気に流す、と言う方法です。 (まあ、あまり手間は変わらないですがw) >私の説明不足でした、、新規テーブルのIDフィールドに対して >"SQL文で一気に100番まで採番したかった" なるほど。 これは無いですね。MySQLに限らず、ORACLEでもSQL Serverでも無いです。 (「無いと思います」ではなく「無いです」。多分、ポスグレでも) 定型的な処理であれば、引数でIDを追記していくようなバッチやシェルスクリプトをあらかじめ作っておいて、都度実行する、とかですね。 そこまでするのは、面倒なので、やはり私や#2さんの回答にあるような方法を定型的にできる仕組みを作っておくとかだと思います。 それと「あらかじめIDだけ100番まで振る」と言う要件の意図が掴めていないので、これも外しているかもしれませんが、「INSERTの都度IDが順番に振られる」で要件が満たせるのであれば、IDをオートインクリメントにすればよいと思います。 ↓ create table (id int UNSIGNED NOT NULL AUTO_INCREMENT ,<以下略> つまり、事前にINSERTしておくのではなく、nameを設定する毎に1から採番される、と言う形になります。 ↓ insert into test(name) values ('aaa'); → ID:1で採番される insert into test(name) values ('bbb'); → ID:2で採番される

anan19
質問者

お礼

>これは無いですね。MySQLに限らず、ORACLEでもSQL Serverでも無いです。 なるほど。 どうりで探しても見つからないわけです。。 ご回答ありがとうございました。

その他の回答 (2)

回答No.2

いろいろ方法がありますが、私がよくやるのは、insert ・・・ selectで、どんどん増やすやり方です。 drop table if exists test; create table test (id int primary key ,name varchar(10) ); insert into test(id) values(1),(2),(3),(4),(5); -- 1~5の5行 insert into test(id) select id+5 from test; -- 6~10を追加し、10行に insert into test(id) select id+10 from test; -- 11~20を追加し、20行に insert into test(id) select id+20 from test; -- 21~40を追加し、40行に insert into test(id) select id+40 from test; -- 41~80を追加し、80行に insert into test(id) select id+80 from test where id<=20; -- 81~100を追加し、100行に

anan19
質問者

お礼

ご回答ありがとうございます。 説明不足でした、、新規テーブルのIDフィールドに対して "SQL文で一気に100番まで採番したかった" というのがしたかったです。。

  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.1

回答としては、「普通にINSERTをするだけ」だと思いますが。。。 insert into test(id) values (1); ↑ これをExcelに記述して下方に向かってビャーッとコピーしていけば1~100までの100行のINSERT文ができますね。 で、これをコピーして、コマンドラインのMySQLクライアントに一気にペースト。 insert into test(id) values (1); insert into test(id) values (2); <中略> insert into test(id) values (99); insert into test(id) values (100); また、MySQLの場合は、この構文でも行けます。 ↓ insert into test(id) values (1), (2), <中略> (99), (100); Excelでの生成のし易さから言って、前者の方がよいでしょう。 いまいち、質問の意図が読み取れなかったので、トンチンカンな回答になったかもしれません。 (その場合は補足をお願いします)

anan19
質問者

お礼

ご回答ありがとうございます。 エクセルで100番までつくってCSVでmysql DBにインポートする というやり方もありだと思うのですが、 回数が多くなってくると手間だな、、と思い、 そもそもSQL文で何かありそう?! と思い googleとかで検索しましたが、 それらしいものが出てこなかったので、こちらに質問させていただきました。 私の説明不足でした、、新規テーブルのIDフィールドに対して "SQL文で一気に100番まで採番したかった" というのがしたかったです。。

関連するQ&A