mySQL JOIN 用法 [重复]
Posted
技术标签:
【中文标题】mySQL JOIN 用法 [重复]【英文标题】:mySQL JOIN usage [duplicate] 【发布时间】:2012-08-12 06:59:38 【问题描述】:可能重复:INNER JOIN ON vs WHERE clause
大约 1 年前,我开始担任网络开发人员。从那时起,我经历了 php、mysql、javascript、jQuery 等。我想我在这段时间里学到了一些东西。但是当涉及到 SQL 时,我是一个真正的菜鸟。我只是做了几个 SELECT、INSERT、UPDATE,并使用了一些函数,如 SUM 或 UNIX_TIMESTAMP 等。
我遇到过 JOIN 函数,它似乎非常有用,但我看不出使用 JOIN 或某些 WHERE 子句“连接”表之间的数据的区别。
我阅读了this article(西班牙语)关于加入的信息。我真的看不出它的用处。例如:
假设这个数据集:
id nombre id nombre
-- ---- -- ----
1 Pirata 1 Rutabaga
2 Mico 2 Pirata
3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja
这个查询:SELECT * FROM TablaA INNER JOIN TablaB ON TablaA.name = TablaB.name
不会产生与SELECT * FROM TablaA, TablaB WHERE TablaA.name = TablaB.name
相同的结果吗?
【问题讨论】:
您刚刚发现了内连接的语法快捷方式。还有其他类型的连接。 ***.com/questions/894490/… 谢谢!从现在开始,我将开始使用 JOIN,我同意,我有一些带有旧 WHERE 子句的大型不可读查询 【参考方案1】:您的示例恰好产生相同的结果,但意识到还有其他类型的连接 - LEFT JOIN 是我通常使用的唯一另一种 - 连接的概念与使用 WHERE 子句过滤结果的概念是分开的.有时 WHERE 子句可能会变得足够复杂,而没有混合所有连接条件。让您的 SQL 易于维护,并在 JOIN 子句中加入,而不是在 WHERE 子句中。
【讨论】:
【参考方案2】:是的,它们会产生相同的结果,但是,SELECT * FROM TablaA, TablaB WHERE TablaA.name = TablaB.name
是一种较旧的执行连接方法,不符合 SQL-92 标准。一旦您的查询开始变得非常复杂,阅读起来也变得更加困难。最好坚持使用显式声明的 INNER JOIN 格式。
【讨论】:
谢谢!我将研究SQL JOIN以更好地理解它以上是关于mySQL JOIN 用法 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
定义13: mysql left join,right join,inner join用法分析