很难解释我尝试使用单词实现的目标......
我在这里使用两张桌子。其中一个客户列出了他们的unqiue参考。第二个表(数据表),其中包含一些通用数据,这些数据通过引用链接到客户。
我想要的是复制数据表中的每个现有行,并替换每个客户的客户参考。
实施例
CustomerTable
ID, Name, Address
001, ABC, ABC
002, DEF, DEF
003, GHI, GHI
DataTable (before)
ID, Detail1, Detail2, Detail3
001, A, B, C
001, D, E, F
001, G, H, I
DataTable (after)
ID, Detail1, Detail2, Detail3
001, A, B, C
001, D, E, F
001, G, H, I
002, A, B, C
002, D, E, F
002, G, H, I
003, A, B, C
003, D, E, F
003, G, H, I
这将更新数千行,因此我不知道最有效的方法。像程序员一样看待它我想使用数组和循环,但这可能不是T-SQL中最好的方法。
答案 0 :(得分:2)
在SQL中,您实际上只是在寻找一组交叉连接的结果,然后可以将这些结果创建到表中。
根据您的示例:
SELECT CustomerTable.ID, DataTable.Detail1, DataTable.Detail2, DataTable.Detail3
INTO New_DataTable
FROM CustomerTable
CROSS JOIN DataTable
这将创建一个包含正确数据的新表(New_DataTable)。然后,您可以重命名旧表并将新表重命名为原始名称。可以使用sp_rename存储过程来执行此操作。
sp_rename DataTable, Original_DataTable
sp_rename New_DataTable, DataTable
您必须保证没有人会更新现有的DataTable来进行切换。