我正在尝试将一个表中的列名作为数据插入到 SQL Server 中的另一个表中。这是我正在使用的查询:
insert into TableB (Name)
select COLUMN_NAME
from information_schema.COLUMNS
where TABLE_NAME = 'TableA'
Run Code Online (Sandbox Code Playgroud)
这将返回零行。我尝试过不指定 TABLE_NAME,也尝试过指定 TABLE_SCHEMA。这些都给出了结果,但不是我想要的。
我看不出您提供的 SQL 代码有任何问题。
更多故障排除:
1)如果您查询:
select COLUMN_NAME
from information_schema.COLUMNS
where TABLE_NAME = 'TableA'
Run Code Online (Sandbox Code Playgroud)
你有结果吗?
2)如果你尝试这个INSERT,它有效吗?
INSERT INTO Table_1 (Name)
Select 'Name1'
Run Code Online (Sandbox Code Playgroud)
3)如果选择这些列,您会在列表中看到 TABLE_NAME 吗?
Select DISTINCT(TABLE_NAME) FROM INFORMATION_SCHEMA.columns
Run Code Online (Sandbox Code Playgroud)
你的 sql 代码对我来说与 Microsoft 的 AdventureWorks-DB 配合得很好(Table_1是一个带有列名的空表):
INSERT INTO dbo.Table_1 (Name)
Select COLUMN_NAME FROM INFORMATION_SCHEMA.columns
where TABLE_NAME = 'ProductInventory'
select * from table_1
Run Code Online (Sandbox Code Playgroud)
输出:
ProductID
LocationID
Shelf
Bin
Quantity
rowguid
ModifiedDate
Run Code Online (Sandbox Code Playgroud)