MS SQL-执行简单联接
我从头开始学习MS SQL,并尝试在表上创建联接,但我的查询有问题:MS SQL-执行简单联接,sql,sql-server,ssms,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'. 有什么不对:)?User是一个关键字,因此要访问“User”列,必须将其放在方括号中: SE
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'.
有什么不对:)?User是一个关键字,因此要访问“User”列,必须将其放在方括号中:
SELECT * FROM Users.[User] JOIN Users.[User] as u ON (u.id = Users.[UserAddress].[user]);
User是一个关键字,因此要访问“User”列,必须将其置于方括号中:
SELECT * FROM Users.[User] JOIN Users.[User] as u ON (u.id = Users.[UserAddress].[user]);
user
是SQL Server中的保留字,因此需要将其括在方括号中。保留字列表为
我建议将您的问题写为:
SELECT *
FROM Users.[User] u JOIN
Users.UserAddress ua
ON u.id = ua.[user];
注意:这也解决了您似乎想要加入UserAddress
而不是自加入User
的问题
还有一些建议:
- 为所有表使用表别名。它们使查询更易于阅读和编写
- 表格别名应为表格的缩写
- 避免对表名和列名使用保留字
- 避免使用方括号(除非你真的需要);它们使查询更难书写和阅读
此外,我通常以复数形式(
Users
)给我的表命名,主键为单数(UserId
),然后总是尝试让外键具有相同的名称(UserId
),在这两种情况下。user
在SQL Server中是一个保留字,因此需要将其括在方括号中。保留字列表为
我建议将您的问题写为:
SELECT *
FROM Users.[User] u JOIN
Users.UserAddress ua
ON u.id = ua.[user];
注意:这也解决了您似乎想要加入UserAddress
而不是自加入User
的问题
还有一些建议:
- 为所有表使用表别名。它们使查询更易于阅读和编写
- 表格别名应为表格的缩写
- 避免对表名和列名使用保留字
- 避免使用方括号(除非你真的需要);它们使查询更难书写和阅读
此外,我通常用复数(
Users
)给我的表命名,主键用单数(UserId
),然后总是尝试让外键具有相同的名称(UserId
);或者更好,不用。我还将指定连接类型、内部、外部、左、右、交叉。我认为这将有助于你的理解。这就像学习数学,你不是从捷径开始,而是展示所有的工作;或者更好,不用。我还将指定连接类型、内部、外部、左、右、交叉。我认为这将有助于你的理解。这就像学习数学一样,你不是从捷径开始,而是展示所有的工作。谢谢你的提示和快速反应!:)它可以工作,但maangement studio在“(u.id=ua.[user])”中强调“Users.UserAddress”和“ua.[user]”。第一条消息是无效的对象名称,第二条消息是:“无法绑定多部分标识符'ua.user'。为什么会发生这种情况?“多部分标识符'ua.user'无法绑定”我已通过清除缓存解决了这一问题谢谢提示和快速响应!)它可以工作,但maangement studio在“(u.id=ua.[user])”中强调“Users.UserAddress”和“ua.[user]”。第一条消息是无效的对象名称,第二条消息是:“无法绑定多部分标识符'ua.user'。为什么会发生这种情况?“无法绑定多部分标识符‘ua.user’”我已通过清除缓存修复了这一问题