Sql 使用WHILE循环将多个表中的指定列插入到一个表中
我有三张桌子。我必须从其中两个表中选择几个指定的列,并将它们插入到一个表中。然而,当我试图将它们拼成一个时,它不会像我预期的那样进行 [附表a]Sql 使用WHILE循环将多个表中的指定列插入到一个表中,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有三张桌子。我必须从其中两个表中选择几个指定的列,并将它们插入到一个表中。然而,当我试图将它们拼成一个时,它不会像我预期的那样进行 [附表a] Col_A Col_B Col_C Col_D ... 101 10 15 AAA 102 20 25 BBB [附表b] Col_D Col_E Col_F Col_G ... 201 30 35 C
Col_A Col_B Col_C Col_D ...
101 10 15 AAA
102 20 25 BBB
[附表b]
Col_D Col_E Col_F Col_G ...
201 30 35 CCC
202 40 45 DDD
[表C]“目标”表
Column_01 Column_02 Column_03 ...
TableA.Col_A-Row1 TableA.Col_B-Row1 0
0 0 TableB.Col_E-Row_1 ...
TableA.Col_A-Row2 TableA.Col_B-Row2 0
0 0 TableB.Col_E-Row_2 ...
0 0 TableB.Col_E-Row_3 ...
0 0 TableB.Col_E-Row_4 ...
我需要插入一些列,而不是全部从TableA和TableB插入TableC,在插入TableA列时,默认值(在本例中为0)必须插入到其余列中。TableB的情况也是如此。
这些插入操作的一个巧妙之处是,TableA与TableB的记录之间存在着1toN关系
现在我想通过简单的查询来实现它,如下所示:
INSERT INTO TableC (
Column_01, Column_02, Column_03 ...
)
SELECT
TableA.Col_A, Table_A.Col_B, 0 ...
FROM TableA
但我也听说我可以使用游标在TableA的循环中迭代TableB
有什么办法解决这个问题吗?我读过好几本TSQL和SQL Server编程书籍,但没有一本书描述过这种“针对设计糟糕的表的查询”,只是简单的SQL基础知识
我知道这不是一个很复杂的问题,但我对存储过程和TSQL还不熟悉,不知道从哪里开始
谢谢。使用光标可能不是个好主意。由于没有匹配列,表A和表B之间没有关系;您可能可以像这样将UNION与insert一起插入select from
感谢您的快速回答和详细解释!对不起,我的描述不清楚,不好。不幸的是,表a和表B之间有一个1对N的关系,这一点让我很恼火。若SQL过程可以使用数组,那个么这将是一项简单的任务。几乎一个月后,除了Rahul,并没有人想出解决方案。虽然我不允许使用UNION,因为表之间的关系有点混乱,但对于任何有类似问题的人来说,这都是一个很大的帮助。所以我接受他的解决方案作为这个案子的答案。谢谢你,拉胡尔!
INSERT INTO TableC (
Column_01, Column_02, Column_03 ...
)
SELECT
TableA.Col_A, Table_A.Col_B, 0 ...
FROM TableA
UNION
SELECT 0, 0, TableB.Col_D, TableB.Col_E, ...
FROM TableB