我可以根据SQL Server中的查询插入多行

时间:2012-08-22 10:57:46

标签: sql sql-server

我需要在我的数据库中插入一大堆东西

纵向写出查询会是这样的(但有更多东西!)

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')

我可以编写一些神奇的SQL连接/合并奇迹查询来获取所有country_ids和所有“事件”类型,并创建我需要的数百个插入语句吗?

编辑:
有一张国家桌子。哪个应插入到MyTable中是sql查询的结果,该查询的每个结果都需要MyTable中的“向上”和“向下”行。有足够的,我不想手动策划查询。

实际上,除了“向上”和“向下”之外,它们可以手动输入,或者作为进一步查询的结果。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

您可以跳过

 Insert into MyTable (country_id, event) values 

并将其替换为

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

如果您的数据来自文件,您可以查看BULK INSERTbcp

或者如果你知道国家和事件是什么,

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

会将所有组合放入您的表格

答案 2 :(得分:2)

你可以像这样加入VALUES

INSERT INTO MyTable (country_id, event) 
VALUES (1001, 'up'),(1001, 'down'),(1002, 'up'),(1003, 'down')

答案 3 :(得分:2)

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

<强> DEMO SQL FIDDLE

注意:两个表架构必须相同