加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL Server中用于寻址表的正确语法是什么?

发布时间:2020-12-12 07:45:24 所属栏目:MsSql教程 来源:网络整理
导读:这似乎是一个相当明显的问题,但我还没有想到我想要问的正确用语,所以提出这方面的参考资料一直很棘手.但答案显而易见. 在检查SQL Server的Pluralsight培训材料时,他们建议始终引用“常规”查询中的表(您可能为基本Web服务编写的内容)和可能存储过程中的SQL查
这似乎是一个相当明显的问题,但我还没有想到我想要问的正确用语,所以提出这方面的参考资料一直很棘手.但答案显而易见.

在检查SQL Server的Pluralsight培训材料时,他们建议始终引用“常规”查询中的表(您可能为基本Web服务编写的内容)和可能存储过程中的SQL查询,如下所示:

[databasename].[dbo].[some_table].[sometimesacolumngoeshere]

虽然我发现遇到存储过程等非常常见,但它只是使用:

my_column    or    [my_column]

这里的区别显然是一个明确提供绝对“地址”,而另一个是隐含的.

你怎么知道何时使用一个而不是另一个,你也称之为解决这个问题?

我的偏好是永远是明确的,如果你需要节省空间和/或使事情更清楚,你可以使用一个明确的完整“地址”别名,对吗?

解决方法

你是对的.基本上,SQL将尝试在FROM和JOIN部分的所有表中查找要查找“my_column”的字段.但是,如果您在表A和表B中碰巧有“my_column”,那么您需要通过包含表名明确告诉它您要查找的“my_column”.如果你在那里发生了碰撞,这会继续上传到dbo和databasename.

大多数情况下,您会发现人们没有明确地调出列所在的表,除非他们正在连接多个表.

例如,我写这样的查询:

SELECT a.field1,b.field2
FROM tableA AS a
INNER JOIN tableB AS b ON a.id = b.a_id
WHERE a.id = 123

在这里,我使用AS将tableA和tableB别名化为更易读的a和b.我可以像这样轻松编写我的查询:

SELECT tableA.field1,tableB.field2
FROM tableA
INNER JOIN tableB ON tableA.id = tableB.a_id
WHERE tableA.id = 123

或者像这样,如果field1和field2对于那些表是唯一的,但是这对于每个数据来自何处都有点混乱.

SELECT field1,field2
FROM tableA
INNER JOIN tableB ON tableA.id = tableB.a_id
WHERE tableA.id = 123

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读