左连接ON非空列不能选择非空列

时间:2016-04-07 20:39:21

标签: sql sql-server-2005

每个表都有一列RECNUM。它们是(十进制(28,0),而不是null)。这就是我加入的地方。我想在CAUNIT中选择列DESC。它是(varchar(28,0),而不是null)。当我运行我的查询时,我得到:

第15行,第1行,第1行,第1行 关键字“DESC”附近的语法不正确。以下是我的询问:

SELECT CDCLSVC.UNIT_ID,CAUNIT.DESC
FROM CDCLSVC
LEFT JOIN CAUNIT
ON CDCLSVC.RECNUM = CAUNIT.RECNUM

1 个答案:

答案 0 :(得分:3)

问题在于DESC列。在SQL Server中,它是reserved keyword

  

Microsoft SQL Server使用保留关键字进行定义,   操纵和访问数据库。保留关键字是其中一部分   SQL Server使用的Transact-SQL语言的语法   解析并理解Transact-SQL语句和批处理。 虽然如此   在语法上可以使用SQL Server保留关键字作为   Transact-SQL脚本中的标识符和对象名称,您可以执行此操作   只能使用分隔标识符。

可能的解决方案:

  1. 重命名列,例如description
  2. 引用[]
  3. 您还可以使用别名来避免输入完整的表名:

    SELECT cd.UNIT_ID,ca.[DESC]
    FROM CDCLSVC cd 
    LEFT JOIN CAUNIT ca
    ON cd.RECNUM = ca.RECNUM