はじめまして、初心者ですのため説明不足がありましたら申し訳ございせん。。

■質問内容
MySQLを使ってます。
新規テーブルを作ったあと、以下のような事をしたいのですが、
そのSQL文を教えていただけないでしょうか?

テーブル名:test
フィールド
id | name

という新規テーブルがあった際
フィールド
id | name
1
2
3
:
:
100

のように、 フィールドIDだけに対して指定した100番まで番号を振りたいのですが、
そのSQL文を教えていただけないでしょうか?

よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (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で採番される
    • good
    • 0
この回答へのお礼

>これは無いですね。MySQLに限らず、ORACLEでもSQL Serverでも無いです。

なるほど。
どうりで探しても見つからないわけです。。

ご回答ありがとうございました。

お礼日時:2011/04/16 23:31

いろいろ方法がありますが、私がよくやるのは、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行に
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

説明不足でした、、新規テーブルのIDフィールドに対して
"SQL文で一気に100番まで採番したかった"

というのがしたかったです。。

お礼日時:2011/04/16 21:00

回答としては、「普通に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での生成のし易さから言って、前者の方がよいでしょう。

いまいち、質問の意図が読み取れなかったので、トンチンカンな回答になったかもしれません。
(その場合は補足をお願いします)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

エクセルで100番までつくってCSVでmysql DBにインポートする
というやり方もありだと思うのですが、
回数が多くなってくると手間だな、、と思い、
そもそもSQL文で何かありそう?! と思い googleとかで検索しましたが、
それらしいものが出てこなかったので、こちらに質問させていただきました。

私の説明不足でした、、新規テーブルのIDフィールドに対して
"SQL文で一気に100番まで採番したかった"

というのがしたかったです。。

お礼日時:2011/04/16 21:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング