我有两个桌子。一个表包含500列的列表。另一个表这样引用每个列名称
Select Top 1 * from MyReferenceTable
哪个返回结果
(69, 'FirtName', 1, NULL)
(69, 'LastName', 2, NULL)
“ FirstName”是实际表中列的名称。
所以我想像这样用其他表中的列名填充此参考表
Insert Into MyReferenceTable
FileId, ColumnName1, ColumnOrder, DefaultValue
Values(69, Select ColumnName From OtherTable? ,
Select Next Sequential Identity?, NULL)
我的问题是如何遍历另一个表以获取每一行的列名,以及如何在sequenceOrder中插入一个标识作为ColumnOrder?
手动输入超过500列的insert语句将花费很多时间。
答案 0 :(得分:1)
这是一个糟糕的主意,但是您问题的答案很简单:
INSERT INTO MyReferenceTabel (FileId, ColumnName1, ColumnOrder, DefaultValue)
SELECT 69, [name], [column_id], NULL
FROM sys.columns
WHERE [object_id] = OBJECT_ID('MyOtherTable')
基本上,您可以设计一个SELECT语句来返回所需的值,然后在其上添加INSERT语句。
但是,这又一次可怕的设计选择的味道,最终会刺痛您。但是知道如何获取此信息仍然很好,因此我将在此发布示例。