だらだらやるよ。

こげつのIT技術メモ

INSERT文について

ちょいとメモを。
インサート時に、他テーブルからのデータを取得する場合、SQLServerはvaluesの中にSELECTを書けないので、こんな風に書きます。

INSERT INTO table1(column1,table2_id)
SELECT 'TESTDATA',(SELECT TOP 1 id FROM table2)

なんとなく気持ち悪い感じがするかもしれないですけど
これはVALUESのかわりにSELECTを使えることを考えると別に普通なのですよね

INSERT INTO table1(column1,table2_id)
SELECT TOP 1 table2.column1,table2.id FROM table2

みたいな。
ちなみにTOP付けないと、検索でひっかかった行全部インサートされます。

んー・・・なんかそれだとVALUES句が要らない気がしてきたけど。。。
他のテーブルを参照しないという意思が明確にできるからいいのかな?