スイーツ(笑)と呼ばないで!!
| |||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
11/24/07:24 [PR] |
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だと微妙に制限もあるからね。 ということで、知っている人からしたら、今更知ったの?と言われるかもしれない豆知識のご紹介。 PR
|
|
|