微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

INNER JOIN的不明确的列名SQL错误:为什么?

以下代码将用于从两个表中选择数据:
SELECT t1.foo,t2.bar FROM TABLE1 t1 INNER JOIN TABLE2 t2 ON t1.foo=t2.foo

我可以很容易地写出来

SELECT t2.foo,t2.bar FROM TABLE1 t1 INNER JOIN TABLE2 t2 ON t1.foo=t2.foo

t1.foo或t2.foo:一个或六个中的六个.为什么不只是foo?

我一直在想,为什么sql服务器只是在没有指定一个表或另一个表的情况下自动返回数据,因为选择完全是任意的(据我所知).

我可以编制一个你需要指定表格的场景,例如

SELECT t1.foo,t2.bar FROM TABLE1 t1 INNER JOIN TABLE t2 ON t1.foo+=t2.foo

但是,根据我的经验,这种情况远非常态.

任何人都可以告诉我为什么语言的设计,以便我必须在我的代码中做出这个看似随意的决定?

解决方法

因为MS sql中的相等并不一定意味着它们在您想要的值中相等.考虑foo的以下2个值:“Bar”,“baR”. sql会认为它们在连接方面是相同的,因为比较中固有的不区分大小写,但是你要求哪一个sql Server不知道,也无法猜测.你必须明确告诉它.

编辑:正如@Lukas Eder提出的那样,并非所有sql实现都使用不区分大小写的比较.我知道MS sql使用不区分大小写,我的答案正是考虑到这个概念.

原文地址:https://www.jb51.cc/mssql/77354.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐