我需要在我的数据库中插入一大堆东西
纵向写出查询会是这样的(但有更多东西!)
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中的“向上”和“向下”行。有足够的,我不想手动策划查询。
实际上,除了“向上”和“向下”之外,它们可以手动输入,或者作为进一步查询的结果。
答案 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 INSERT
或bcp
。
或者如果你知道国家和事件是什么,
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)