关于sql:mySQL JOIN用法

mySQL JOIN usage

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
INNER JOIN ON vs WHERE clause

我大约一年前开始做网络开发人员。从那以后,我学习了php、mysql、javascript、jquery等,我想这次我学到了一些东西。但说到SQL,我真是个笨蛋。我只需要执行一些选择、插入、更新和使用一些函数,比如sum或unix_timestamp等。

我遇到了join函数,它似乎非常有用,但是我看不到使用join或某些where子句"join"表之间的数据的区别。

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

假设此数据集:

1
2
3
4
5
6
id nombre       id  nombre
-- ----         --  ----
1  Pirata       1   Rutabaga
2  Mico         2   Pirata
3  Ninja        3   Darth Vader
4  Spaghetti    4   Ninja

这个查询是否会产生与SELECT * FROM TablaA, TablaB WHERE TablaA.name = TablaB.name相同的结果?


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


您的示例恰好产生了相同的结果,但是要意识到还有其他类型的联接——左联接是我通常使用的唯一一种联接——联接的概念与用WHERE子句过滤结果的概念是分离的。有时,where子句可以变得足够复杂,而不需要在其中混合所有连接条件。在join子句中保持SQL易于维护和联接,而不是在where子句中。