错误“不明确的列名称‘id’”是什么意思?

0 sql-server

使用正确连接的以下查询出现错误。我的表有一个名为“id”的列。

SELECT TOP 6 id
FROM   dbo.tbldata
       RIGHT JOIN tblimg
               ON tbldata.id = tblimg.newsid
ORDER  BY createdDate DESC 
Run Code Online (Sandbox Code Playgroud)

错误是:

不明确的列名“id”

Ton*_*kle 8

该错误指的是查询第一行中的“id”。SQL Server 不知道您指的是 tbldata.id 还是 tblimg.id。

始终使用别名是一种很好的做法,这样表架构更改就不太可能破坏您的查询:

SELECT TOP 6 td.id
FROM   dbo.tbldata td
       RIGHT JOIN tblimg ti
               ON td.id = ti.newsid
ORDER  BY createdDate DESC 
Run Code Online (Sandbox Code Playgroud)

  • 除了给列添加别名之外,另一个最佳实践是使用除类之外的描述符命名列,例如“CustomerID”而不仅仅是“ID”。 (6认同)
  • ^ 丹所说的,x1000。无论您在架构或查询中的哪个位置找到它,您都应该能够将像“ID”这样的列标识符识别为它所代表的内容。有些人会争辩说它在自己的表中是多余的,但当你只是孤立地看表时,你很少试图弄清楚它是什么。恕我直言,一致性比避免冗余更重要。 (2认同)