每个表都有一个列 RECNUM。它们是(十进制(28,0),不为空)。这就是我加入的地方。我想选择 CAUNIT 中的 DESC 列。它是(varchar(28,0),不为空)。当我运行查询时,我得到:
消息 156,级别 15,状态 1,第 1 行 关键字“DESC”附近的语法不正确。以下是我的查询:
SELECT CDCLSVC.UNIT_ID,CAUNIT.DESC
FROM CDCLSVC
LEFT JOIN CAUNIT
ON CDCLSVC.RECNUM = CAUNIT.RECNUM
最佳答案
问题出在 DESC
列上。在 SQL Server
中,它是 reserved keyword :
Microsoft SQL Server uses reserved keywords for defining, manipulating, and accessing databases. Reserved keywords are part of the grammar of the Transact-SQL language that is used by SQL Server to parse and understand Transact-SQL statements and batches. Although it is syntactically possible to use SQL Server reserved keywords as identifiers and object names in Transact-SQL scripts, you can do this only by using delimited identifiers.
可能的解决方案:
- 重命名列,例如
描述
- 用
[]
引用它
您还可以使用别名来避免输入完整的表名称:
SELECT cd.UNIT_ID,ca.[DESC]
FROM CDCLSVC cd
LEFT JOIN CAUNIT ca
ON cd.RECNUM = ca.RECNUM
关于sql - 左连接ON非空列不能选择非空列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36486760/