2

可能重复:
INNER JOIN ON vs WHERE 子句

大约 1 年前,我开始担任 Web 开发人员。从那时起,我经历了 PHP、mySQL、Javascript、jQuery 等。我想我在这段时间里学到了一些东西。但是当涉及到 SQL 时,我是一个真正的菜鸟。我只是做了几个 SELECT、INSERT、UPDATE,并使用了一些函数,如 SUM 或 UNIX_TIMESTAMP 等。

我遇到过 JOIN 函数,它似乎非常有用,但我看不出使用 JOIN 或某些 WHERE 子句“加入”表之间的数据的区别。

我读了这篇关于加入的文章(西班牙语)。我真的看不出它的用处。例如:

假设这个数据集:

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

4

2 回答 2

4

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

于 2012-08-15T23:06:03.127 回答
2

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

于 2012-08-15T23:09:09.360 回答