SQL Server: INSERT INTO à partir de plusieurs tables sans aucune relation entre eux

Tableau 1:

NAME ------ Clara Bob 

Tableau 2:

 NUMBER -------- 555-1111 555-2222 555-3333 

et maintenant je veux insert des données dans le tableau 3 qui me montre des informations comme:

 NAME NUMBER ---------------- Clara 555-1111 Clara 555-2222 Clara 555-3333 Bob 555-1111 Bob 555-2222 Bob 555-3333 

Je sais que cela peut être fait en utilisant deux requêtes SQL différentes, mais je veux le faire en une seule requête. Je n'ai aucune relation entre table1 et table2. Comment puis-je insert ces loggings dans une seule instruction d'insertion, sans utiliser la boucle WHILE .

Utilisez cross join pour générer datatables:

 select t1.name, t2.number from t1 cross join t2; 

Vous pouvez utiliser insert ou select into pour placer les résultats dans une autre table:

 insert into t3(name, number) select t1.name, t2.number from t1 cross join t2; 

Ironiquement, je ne peux pas penser à un moyen raisonnable de le faire avec exactement deux requêtes.

Vous pouvez simplement essayer ci-dessous la requête:

 SELECT T1.Name, T2.Number FROM @tbl1 AS T1,@tbl2 AS T2 Order BY T1.Name 
 INSERT INTO table3(NAME, NUMBER) SELECT table1.NAME, t2.NAME FROM table1 FULL JOIN table2 
 ;With Cte1(NAME) AS ( SELECT 'Clara' Union all SELECT 'Bob' ) ,cte2 (NUMBER ) AS ( SELECT '555-1111' UNION ALL SELECT '555-2222' UNION ALL SELECT '555-3333' ) INSERT INTO Table3(NAME,NUMBER) SELECT * FROM CTE1 CROSS JOIN CTE2