我有3张桌子。我必须从其中两个表中选择几个指定的列,并将它们插入到一个表中。然而,当我试图将它们“混合”为一体时,它不会像我预期的那样发展。
[表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 CCC
202 40 45 DDD
[TableC]('目标'表)
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
但我也听说过我可以使用Cursor在TableA循环中迭代TableB ...
有什么方法可以解决这个问题吗?我已经阅读了几本TSQL和SQL Server编程书籍,但它们都没有描述这样的'查询设计糟糕的表',只是简单的SQL基础知识。
我知道这不是一个复杂的问题,但我是Stored Procedure和TSQL的新手,我不知道从哪里开始。
感谢。
答案 0 :(得分:0)
使用游标可能不是一个好主意。由于tableA和tableB之间没有匹配的列(无关系);你可以和UNION
一起做insert into select from
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