0

我有两张桌子。一张表 (A) 有 n 行数据,另一张表 (B) 为空。我想在表 B 中插入 n 行,表 A 中的每一行插入 1 行。表 B 中将包含表 A 中的几个字段,包括表 A 中的外键。最后我想要 B 中的一行对于 A 中的每一行。我怎样才能编写一些 TSQL 来做到这一点?

4

4 回答 4

4
INSERT INTO TableB (ColA, ColB, ColC)
SELECT ColA, ColB, ColC
FROM TableA

Pinal Dave 在这里写了一篇关于其他替代方法的精彩文章:

http://blog.sqlauthority.com/2007/08/15/sql-server-insert-data-from-one-table-to-another-table-insert-into-select-select-into-table/

于 2012-11-20T15:14:50.343 回答
1

如果我理解正确,您需要使用类似SELECT INTOhttp ://www.w3schools.com/sql/sql_select_into.asp

于 2012-11-20T15:15:08.467 回答
1

你可以这样做:

;WITH CTE
AS
(
   SELECT *, ROW_NUMBER() OVER(ORDER BY PrimaryKey) row_num
   FROM tableA
)
INSERT INTO Tableb(...)
SELECT ...
FROM CTE
WHERE row_num = 1;
于 2012-11-20T15:15:30.093 回答
1

这可以通过使用以下查询来完成。

INSERT INTO B(PriKey, RelationshipWithA, Description)
SELECT ROW_NUMBER(), A.PrimaryKey, A.Description
FROM A

如果您想要一个更充分的示例,您可以向我提供您希望输入的特定表名和列。

于 2012-11-20T15:16:26.360 回答