首页 > 解决方案 > ODBC 选择带空格的列 - 不喜欢方括号

问题描述

我在 Access97 中有一个查询,它从 Sql Server 2016 插入到 Access97 表中,如下所示:

INSERT INTO [alarm]
SELECT priority FROM [commonservices.alarm] IN '' 
[ODBC;DRIVER=ODBC Driver 13 for SQL Server;
 SERVER=.;Trusted_Connection=Yes;
 DATABASE=CommonServices]; 

这工作正常。

我的问题是,如果我想选择一个名称中有空格的列,例如“Alarm Gag”,当我用方括号括起来时,我会收到错误“由查询定义的 SELECT 列表中的别名 'Alarm Gag' 引起的循环引用.

所以,如果我运行:

INSERT INTO [alarm]
SELECT [alarm gag] FROM [commonservices.alarm] IN '' 
[ODBC;DRIVER=ODBC Driver 13 for SQL Server;
 SERVER=.;Trusted_Connection=Yes;
 DATABASE=CommonServices]; 

然后我得到:

在此处输入图像描述

如果我尝试使用 [priority],我也会遇到同样的问题

有什么想法可以解决这个问题吗?

标签: sql-serverms-accessodbc

解决方案


循环引用错误是由与列名相同的列别名引起的。

可以通过为导致循环引用错误的列指定表名来避免它们。

INSERT INTO [alarm]
SELECT alarm.[alarm gag] FROM [commonservices.alarm] IN '' 
[ODBC;DRIVER=ODBC Driver 13 for SQL Server;
 SERVER=.;Trusted_Connection=Yes;
 DATABASE=CommonServices]; 

推荐阅读