Dan*_*don 8 sql sql-server inner-join
以下代码将用于从两个表中选择数据:
SELECT t1.foo, t2.bar FROM TABLE1 t1 INNER JOIN TABLE2 t2 ON t1.foo=t2.foo
Run Code Online (Sandbox Code Playgroud)
我可以这么容易写
SELECT t2.foo, t2.bar FROM TABLE1 t1 INNER JOIN TABLE2 t2 ON t1.foo=t2.foo
Run Code Online (Sandbox Code Playgroud)
t1.foo或者t2.foo:一个或六个中的六个.为什么不foo呢?
我一直在想,为什么SQL服务器只是在没有指定一个表或另一个表的情况下自动返回数据,因为选择完全是任意的(据我所知).
我可以编写一个你需要指定表格的场景,例如
SELECT t1.foo, t2.bar FROM TABLE1 t1 INNER JOIN TABLE t2 ON t1.foo+=t2.foo
Run Code Online (Sandbox Code Playgroud)
但是,根据我的经验,这种情况远非常态.
任何人都可以告诉我为什么语言的设计,以便我必须在我的代码中做出这个看似随意的决定?
因为MS SQL中的相等并不一定意味着它们在您想要的值中相等.考虑foo的以下2个值:"Bar","baR".Sql会认为它们在连接方面是相同的,因为比较中固有的不区分大小写,但是你要求哪一个?SQL Server不知道,也无法猜测.你必须明确告诉它.
编辑:正如@Lukas Eder提出的那样,并非所有SQL实现都使用不区分大小写的比较.我知道MS SQL使用不区分大小写,我的答案正是考虑到这个概念.
| 归档时间: |
|
| 查看次数: |
12614 次 |
| 最近记录: |