Sql 非空列上的左联接可以';t选择非空列
每个表都有一列RECNUM。它们是(十进制(28,0),不是空的)。这就是我加入的地方。我想在CAUNIT中选择列DESC。它是(varchar(28,0),不是null)。当我运行查询时,我得到: 味精156,第15级,状态1,第1行 关键字“DESC”附近的语法不正确。以下是我的疑问:Sql 非空列上的左联接可以';t选择非空列,sql,sql-server-2005,Sql,Sql Server 2005,每个表都有一列RECNUM。它们是(十进制(28,0),不是空的)。这就是我加入的地方。我想在CAUNIT中选择列DESC。它是(varchar(28,0),不是null)。当我运行查询时,我得到: 味精156,第15级,状态1,第1行 关键字“DESC”附近的语法不正确。以下是我的疑问: SELECT CDCLSVC.UNIT_ID,CAUNIT.DESC FROM CDCLSVC LEFT JOIN CAUNIT ON CDCLSVC.RECNUM = CAUNIT.RECNUM 问题在于
SELECT CDCLSVC.UNIT_ID,CAUNIT.DESC
FROM CDCLSVC
LEFT JOIN CAUNIT
ON CDCLSVC.RECNUM = CAUNIT.RECNUM
问题在于
DESC
列。在SQL Server中,它是一个:
Microsoft SQL Server使用保留关键字定义,
操作和访问数据库。保留关键字是
SQL Server用于执行以下操作的Transact-SQL语言的语法:
分析和理解Transact-SQL语句和批处理虽然
在语法上可以使用SQL Server保留关键字作为
Transact-SQL脚本中的标识符和对象名称,您可以这样做
只能使用分隔标识符。
可能的解决办法:
说明
[]
SELECT cd.UNIT_ID,ca.[DESC]
FROM CDCLSVC cd
LEFT JOIN CAUNIT ca
ON cd.RECNUM = ca.RECNUM
选择CDCLSVC.UNIT\u ID,CAUNIT.[DESC]…
DESC
是关键字。用[]
引用它,或者重命名它,例如“description”。并尽量避免在将来使用SQl server关键字作为对象名称。您好@lad2025:这不是评论,而是答案:-)@ThorstenKettner是的,但我认为这个问题显然是“输入错误”而且应该关闭。@lad2025:显然,当Chris选择DESC
作为列名时,他不知道自己在使用保留字。所以这个问题没问题。而且,谁知道呢,将来甚至有人会犯类似的错误,并且很高兴找到这个请求和答案。