質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

254閲覧

テストデータを作成するSQLを作成したい

aushijima

総合スコア55

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

1クリップ

投稿2018/09/07 02:38

編集2018/09/10 07:09

練習でMySQLでテストデータを190件作りたいと思っています。
決められたデータを同じ数づつ入れることは、可能でしょうか?

PERMISSION_TYPEに下記のデータを同じ数づつ入れたい
下のPERMISSION_TYPEの19個を10件づつ入れたいです。

1,50,100,101,110,120,130,140,150,199,200,300,301,350,400,450,451,800,9999

PERMISSION_STATUSに下記のデータをランダムで入れたい

0,1

テストデータ作成用SQL(今回は、①と②に入れる方法で悩んでます)

INSERT INTO PERMISSION (PERMISSION_NO, PERMISSION_MEMBER_NO, PERMISSION_TYPE, PERMISSION_IMAGE, PERMISSION_INS_TS, PERMISSION_UPD_TS, PERMISSION_STATUS) SELECT @rownum := @rownum + 1, @rownum := @rownum + 1, ①, null, now(), now(), ② FROM PERMISSION, /* 作成したい件数以上のレコードを保持する任意のテーブル */ (select @rownum := 100) as INIT /* 変数初期化 */ LIMIT 100; /* 作成したい件数を設定する */

以上教えていただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/09/07 04:13 編集

パターンを網羅したいなら、ランダムは採用しませんよ。ランダムということは偏る可能性もあるってことですから。
aushijima

2018/09/10 01:18

ご指摘ありがとうございます。バランスよく偏らずに入れるには、どのようにしたら良いですか?
sazi

2018/09/10 06:34 編集

rand()を使わずに一時テーブルとかfunctionなりで行えば良いと思いますけど。 ただ、バランスとはご自身で決めるものです。 少なくともどのようなバランスを希望されるのかを質問に追記しないと、求めるものは得られないと思います。
aushijima

2018/09/10 06:42

すみません。一時テーブルというものを作ったことがなく、テストデータの作成で調べてみたのですが、このサイトのテンポラリのような方法で作成すれば良いのでしょうか?http://d.hatena.ne.jp/yk5656/20140202/1391910335
sazi

2018/09/10 06:54

別に一時テーブルでなくても大丈夫です。一時テーブルだと消し忘れがなくて良いかな?程度ですので。
aushijima

2018/09/10 07:13

ありがとうございます。質問のバランスの所を具体的に修正しました。
guest

回答1

0

ベストアンサー

functionをつくってみては?

SQL

1drop function if exists rnd; 2create function rnd() 3returns int deterministic 4return case CAST(19*rand() as unsigned) 5when 0 then 1 6when 1 then 50 7when 2 then 100 8when 3 then 101 9when 4 then 110 10when 5 then 120 11when 6 then 130 12when 7 then 140 13when 8 then 150 14when 9 then 199 15when 10 then 200 16when 11 then 300 17when 12 then 301 18when 13 then 350 19when 14 then 400 20when 15 then 450 21when 16 then 451 22when 17 then 800 23else 999 24end ;

SQL

1select rnd();

※rnd()を実行すると所定の値が得られる

投稿2018/09/07 02:52

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aushijima

2018/09/10 07:11 編集

ありがとうございます。SQLの中で関数を作成して使えること知りませんでした。PERMISSION_STATUSなどの社員が辞めたか辞めていないか(一定にそろえなくて良さそうなデータ)の代入は、ランダムでやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問