読者です 読者をやめる 読者になる 読者になる

checkpoint

自分用のIT技術系ノートです。古い情報や間違っている情報もあるので注意。

ACCESSで複数行同時INSERT

先ず、1行だけのテーブルを用意する。
これはダミー。テーブル定義などはなんでもいい。とにかくデータが1行だけ必要。


・TblDummy


以下のようにUNION ALLを使用してINSERT分を組み立てる


INSERT INTO
  TblDestination
  (Col1, Col2, Col3)
  SELECT * FROM
  [
    SELECT
      'KEY1' AS Col1
      , 'VALUE1' AS Col2
      , 100 AS Col3
    FROM
      TblDummy
    UNION ALL
    SELECT
      'KEY2'
      , 'VALUE2'
      , 200
    FROM
      TblDummy
    ]. AS TblTemporary


大括弧を閉じた後のピリオドを忘れずに。
INSERTする内容とか列数は適宜変更。
一発目のSELECT文には、必ずINSERT先のカラム名を別名として割り当てる。
UNION ALLの後の二発目以降は別名が不要。(あってもいい)
UNION ALLで何行でもつなげるが、50個以上になるとエラー("クエリが複雑すぎます" ACCESS2003調べ)
ダミーテーブル(上の例ではTblDummy)の行数が2行以上あると、INSERTされる数が行数倍になるので注意
↑逆にこれを利用できることもあるかも