如何从不同模式的表中查看记录?

Posted

技术标签:

【中文标题】如何从不同模式的表中查看记录?【英文标题】:How do I view records from a table in a different schema? 【发布时间】:2021-04-17 06:01:43 【问题描述】:

除了使用链接服务器之外,我如何查看来自不同架构的表中的记录?

所以如果我在 [eg].[info] 中有一个表,而在 [ie].[info] 中有另一个表,我该如何将它们连接在一起?也就是说,一个模式是 [eg],另一个是模式 [ie]。

【问题讨论】:

不要使用标准的语法缩写作为名称。或者,如果您的目标符合语言标准,请正确使用它们。您只是以这种方式使用它们来增加混乱。链接的服务器和模式名称没有直接关系 - 这是一个问题吗?如果您需要引用表,最佳做法是始终使用 2 部分名称 - [schema].[table]。最佳做法是总是给每个表一个简短(但不神秘)的别名,然后在引用每一列时使用该别名。 【参考方案1】:

在 SQL Server 2018 及更高版本中,它已被弃用。错误我得到的三部分名称是...此版本的 SQL Server 不支持。

【讨论】:

【参考方案2】:

您需要使用AS 为表起别名(无论如何您都应该这样做):

FROM eg.info AS info1
JOIN ie.info AS info2

【讨论】:

别名是个好主意,但 SQL Server 不支持 ANSI SQL schema.table.column 语法,例如eg.info.id = ie.info.id? @jarlh 见here,它已被弃用,尽管我认为它仍然有效:“三部分和四部分列引用。” 问题是除非使用链接服务器,否则无法从另一个模式中的一个模式读取表。是的,这很奇怪。所以,我想知道是否有替代方案。 什么,这根本不是真的,只是使用两部分表名和别名 你是对的。现在已弃用。我以为我在想象一些事情。我使用了三部分名称并收到以下错误。 ...此版本的 SQL Server 不支持。

以上是关于如何从不同模式的表中查看记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用触发器从两个不同的表中插入数据

SQL Query 从不同的表中选择相同的数据,显示所有记录,但显示/显示匹配

从表单插入到不同的表中

SQL,如何从不同的表中选择属性?

如何从不同的表中减去两个整数值

如何从 3 个不同的表中插入内连接