SQL Server 2005多部分标识符“;x";无法约束
我想我有语法问题,但我正在努力寻找答案 有人能解释一下原因吗SQL Server 2005多部分标识符“;x";无法约束,sql,sql-server,sql-server-2005,syntax,Sql,Sql Server,Sql Server 2005,Syntax,我想我有语法问题,但我正在努力寻找答案 有人能解释一下原因吗 SELECT TOP 3 * FROM Facilities INNER JOIN FacilityStates ON FacilityStates.Asset = Facilities.ID WHERE Facilities.ID = 'MyFacility' 编译并返回合适的结果,但我认为是完全限定的版本 SELECT TOP 3 * FROM [dbo].[Facilitie
SELECT TOP 3 * FROM Facilities
INNER JOIN FacilityStates
ON FacilityStates.Asset = Facilities.ID
WHERE Facilities.ID = 'MyFacility'
编译并返回合适的结果,但我认为是完全限定的版本
SELECT TOP 3 * FROM [dbo].[Facilities]
INNER JOIN [dbo].[FacilityStates]
ON [dbo].[FacilityStates.Asset] = [dbo].[Facilities.ID]
WHERE [dbo].[Facilities.ID] = 'MyFacility'
抛出“无法绑定多部分标识符“x”。对于“on”子句和“where”子句的左、右部分?,因为您正在将
表组合在一起。列
在一组方括号中:
....
ON [dbo].[FacilityStates.Asset] = [dbo].[Facilities.ID]
....
SELECT TOP 3 * FROM [dbo].[Facilities]
INNER JOIN [dbo].[FacilityStates]
ON [dbo].[FacilityStates].[Asset] = [dbo].[Facilities].[ID]
WHERE [dbo].[Facilities].[ID] = 'MyFacility'
这应该是:
....
ON [dbo].[FacilityStates].[Asset] = [dbo].[Facilities].[ID]
....
SQL Server中的方括号用于显式表示可能包含空格或保留字的对象名称。因此,当您在一组括号内组合
FacilityStates.Asset
时,您告诉SQL Server有一个具有该名称的对象。没有。这是方括号的位置:
....
ON [dbo].[FacilityStates.Asset] = [dbo].[Facilities.ID]
....
SELECT TOP 3 * FROM [dbo].[Facilities]
INNER JOIN [dbo].[FacilityStates]
ON [dbo].[FacilityStates].[Asset] = [dbo].[Facilities].[ID]
WHERE [dbo].[Facilities].[ID] = 'MyFacility'
试着找出方括号内的所有内容都是一个名称。您使用方括号将表名和字段名框在一起。有效查询是:
SELECT TOP 3 *
FROM [dbo].[Facilities]
INNER JOIN [dbo].[FacilityStates]
ON [dbo].[FacilityStates].[Asset] = [dbo].[Facilities].[ID]
WHERE [dbo].[Facilities].[ID] = 'MyFacility'