MS SQL - 执行简单连接

Efr*_*rin 0 sql sql-server ssms

我正在从头开始学习MS SQL,我正在尝试在我的表上创建一个连接但是我的查询有问题:

SELECT * FROM Users.[User] JOIN Users.[User] as u ON (u.id = Users.[UserAddress].user);


Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'user'.
Run Code Online (Sandbox Code Playgroud)

表结构

怎么了 :)?

Gor*_*off 6

user是SQL Server中的保留字,因此您需要将其括在方括号中.保留字列表在这里.

我建议您将查询编写为:

SELECT *
FROM Users.[User] u JOIN
     Users.UserAddress ua
     ON u.id = ua.[user];
Run Code Online (Sandbox Code Playgroud)

注意:这也解决了您似乎想要加入的问题UserAddress而不是自联接的问题User.

还有一些建议:

  • 为所有表使用表别名.它们使查询更易于读写.
  • 表别名应该是表的缩写.
  • 避免对表名和列名使用保留字.
  • 避免方括号(除非你真的需要它们); 他们使查询更难写和阅读.

另外,我通常Users使用singular(UserId)中的主键给复数()中的表名,然后总是尝试让外键具有相同的名称(UserId在这两种情况下).