SQL Server 错误:“最大前缀数。”最大值为 3"使用子选择语法
尝试运行跨服务器更新:
UPDATE asilive.Contoso.dbo.lsipos
SET PostHistorySequencenNmber = (
SELECT TransactionNumber
FROM Transactions
WHERE Transactions.TransactionDate =
asilive.CMSFintrac.dbo.lsipos.TransactionDate)
出现错误:
Server: Msg 117, Level 15, State 2, Line 5
The number name 'asilive.Contoso.dbo.lsipos' contains more than
the maximum number of prefixes. The maximum is 3.
什么原因?
注意:将查询重新排列为可读性较差连接形式:
UPDATE asilive.Contoso.dbo.lsipos
SET PostHistorySequenceNumber = B.TransactionNumber
FROM cmslive.Contoso.dbo.lsipos A
INNER JOIN Transactions B
ON A.TransactionDate = B.TransactionDate
不会给出错误。
另请参阅
- SQL Server 错误:最大前缀数。最大为 3。使用连接语法
(处理连接语法;这个问题处理子选择语法)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,事情就是这样。您不能拥有超过三个前缀,因此当超过 3 个时(主要是加入其他服务器时),您必须使用别名。从 Sql Server 7 开始(也许在我不记得 6.5 之前)就是这样。
如果您想让代码在使用别名时更具可读性,请指定一个更有意义的别名,这将使它更容易理解。
例子:
Yes, that is just the way it is. You can't have more than three prefixes, so you have to use an aliases when you go over 3 (mainly when joining to other servers). It's been that way since Sql Server 7 (and maybe before I can't remember on 6.5).
If you want to make your code more readable when using aliases, specify a more meaningful alias which will make it a lot easier to follow.
Example: