La manière la plus concise d'insert une série de valeurs pour chaque rangée?

Quelle est la manière la plus concise d' insert une série de valeurs pour chaque ligne d'une table? Peut-il être fait sans utiliser une boucle ou un slider?

Par exemple, en supposant que les chats, les chiens et les écureuils partagent tous les comportements 1, 2 et 3:

Tableau 1:

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

Tableau 2:

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

Cela peut être fait en utilisant une simple instruction d'insertion:

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

En supposant que les comportements sont dans table_3

 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 @tt CROSS APPLY (SELECT ID from @t ) tt Select * from @tt