【问题标题】:mySQL JOIN usage [duplicate]mySQL JOIN 用法 [重复]
【发布时间】: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 相同的结果吗?

【问题讨论】:

  • 您刚刚发现了内连接的语法快捷方式。还有其他类型的连接。
  • 谢谢!从现在开始,我将开始使用 JOIN,我同意,我有一些带有旧 WHERE 子句的大型不可读查询

标签: mysql sql join inner-join


【解决方案1】:

您的示例恰好产生相同的结果,但意识到还有其他类型的连接 - LEFT JOIN 是我通常使用的唯一另一种 - 连接的概念与使用 WHERE 子句过滤结果的概念是分开的.有时 WHERE 子句可能会变得足够复杂,而没有混合所有连接条件。让您的 SQL 易于维护,并在 JOIN 子句中加入,而不是在 WHERE 子句中。

【讨论】:

    【解决方案2】:

    是的,它们会产生相同的结果,但是,SELECT * FROM TablaA, TablaB WHERE TablaA.name = TablaB.name 是一种较旧的执行连接方法,不符合 SQL-92 标准。一旦您的查询开始变得非常复杂,阅读起来也变得更加困难。最好坚持使用显式声明的 INNER JOIN 格式。

    【讨论】:

    • 谢谢!我将研究SQL JOIN以更好地理解它
    猜你喜欢
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    相关资源
    最近更新 更多