最简洁的方法是为每一行插入一系列值?

时间:2015-07-08 14:45:52

标签: sql sql-server database tsql

在表格中 每行 插入一系列值 的最简洁方法是什么?可以在不使用循环或游标的情况下完成吗?

例如,假设猫,狗和松鼠都分享行为1,2和3:

表1:

===================
  Id  |  Name    
===================
   1  |  Cat
-------------------
   2  |  Dog
-------------------
   3  |  Squirrel 

表2:

=============================
  AnimalId  |  BehaviorId
=============================
         1  |  1
-----------------------------
         1  |  2
-----------------------------
         1  |  3
-----------------------------
         2  |  1
-----------------------------
         2  |  2
-----------------------------
         2  |  3
-----------------------------
         3  |  1
-----------------------------
         3  |  2
-----------------------------
         3  |  3
-----------------------------

2 个答案:

答案 0 :(得分:3)

可以使用简单的insert语句来完成:

insert into table_2 (AnimalId,BehavoirId)
select t1.AnimalId , t3.BehavoirId from table_1 t1
cross join table_3 t3

假设行为在table_3

答案 1 :(得分:1)

declare @t table (Id int,Name varchar(10))
insert into @t(Id,Name)values (1,'cat'),(2,'dog'),(3,'Squirrel')

declare @tt table (AnimalId int,BehaviourId int)

INSERT INTO @tt(AnimalId,BehaviourId)
select tt.ID,t.ID from @t t
CROSS APPLY (SELECT ID from @t )  tt 


Select * from @tt
相关问题