1

データベースにたくさんのものを挿入する必要があります

手書きで書かれたクエリは次のようになります(ただし、もっと多くのものがあります!)

Insert into MyTable (country_id, event) values (1001, 'up')
Insert into MyTable (country_id, event) values (1001, 'down')
Insert into MyTable (country_id, event) values (1002, 'up')
Insert into MyTable (country_id, event) values (1003, 'down')
....
Insert into MyTable (country_id, event) values (9999, 'up')
Insert into MyTable (country_id, event) values (9999, 'down')

country_idsすべての「イベント」タイプを取得し、必要な数百の挿入ステートメントを作成する、ある種の魔法のSQL結合/マージワンダークエリを作成できますか?

編集:
国の表があります。MyTableに挿入する必要があるのは、SQLクエリの結果であり、そのクエリの各結果には、MyTableの「up」行と「down」行が必要です。手作業でクエリをキュレートしたくないほど十分です。

実際には、「上」と「下」以外にもありますが、手動で入力することも、さらにクエリを実行した結果として入力することもできます。

4

4 に答える 4

7

国とイベント リストのデカルト積を作成し、一度に挿入します。

insert into MyTable (country_id, event)
select countries.country_id, 
       e.[event]
  from countries
 cross join
 (
   select 'Up' [event]
   union all
   select 'Down'
 ) e
于 2012-08-22T11:11:40.297 に答える
2

http://sqlfiddle.com/#!3/0355b/10

デモ SQL フィドル

注:両方のテーブル スキーマが同じである必要があります

于 2012-08-22T11:53:10.740 に答える
2

スキップできます

 Insert into MyTable (country_id, event) values 

そしてそれを

 Insert into MyTable (country_id, event) values (1001, 'down'),
 (1002, 'up'),
 (1003, 'down')

または、データがファイルから取得されているBULK INSERTかどうかを確認することもできます。bcp

または、国やイベントが何であるかを知っている場合は、

Insert MyTable (country_id, event) 
SELECT countryid, event 
FROM country, events

すべての組み合わせをテーブルに入れます

于 2012-08-22T11:00:03.623 に答える
2

VALUES次のように参加できます。

INSERT INTO MyTable (country_id, event) 
VALUES (1001, 'up'),(1001, 'down'),(1002, 'up'),(1003, 'down')
于 2012-08-22T11:01:09.770 に答える