忍者ブログ

スイーツ(笑)と呼ばないで!!

NEW ENTRY
10 2024/11 1 23 4 5 6 7 8 910 11 12 13 14 15 1617 18 19 20 21 22 2324 25 26 27 28 29 30 12

11/24/07:24  [PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

05/26/15:09  MySQLで既存データから新しいテーブルを作成



既存テーブルのある一部の列だけ、とか、変換や集計した結果を、とかいろんなパターンがあるだろうけど、とにかくコンバート作業なんかで既にあるデータをゴニョゴニョして新しいテーブルに入れたいというシーンはたまにある。

そんな時に、例えば一時テーブルをしっかり定義してCREATE文流して、それにINSERT SELECTでデータを入れ込むなんてことをやったりする。

ふと、昔、SQL ServerでSELECT INTOというのがあったなーと思い出した。

SELECT  欲しいカラム INTO 新しいテーブル名 FROM 既存のテーブル名 WHERE 条件

とかってやると、DDL流さないでもSQLの実行結果で新しいテーブルが出来上がる。超便利。

で、MySQLでもそんなのあるはずだよなと調べてみたら

CREATE TABLE 新しいテーブル名 AS SELECT  欲しいカラム FROM 既存のテーブル名 WHERE 条件

という感じで作れるらしい。

CREATE の後がTABLEになっているの以外は、VIEWのCREATE文そのまま。

コンバートの時だけでなく、ログテーブルの古いデータの切り離しとか、いろいろ活躍できる部分はありそう。

いや、DDL流すのと一手間しか変わらないけど、この一手間の精神的なハードルの差は以外と大きい。

例えば、開発の時でも、いくつかのSQLの結果を比較する時に、中断した後とかでも複数のパターンのSQLを毎回実行して流し直す必要がなくて、単に結果が保存されているテーブルのデータだけを見れば良いしね。

この目的ならVIEWでも良さそうだけど、VIEWだと微妙に制限もあるからね。

ということで、知っている人からしたら、今更知ったの?と言われるかもしれない豆知識のご紹介。

拍手[0回]

PR
URL
FONT COLOR
COMMENT
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
PASS

TRACKBACK

TRACKBACK-URL