mysql中'where'和不同'join'之间有什么区别?

时间:2010-07-18 15:07:03

标签: mysql join

  

可能重复:
  In MySQL queries, why use join instead of where?

联接对我来说总是令人困惑。任何人都可以告诉我不同​​联接之间有什么区别,哪一个最快,什么时候使用哪个联接和join和where子句有什么区别? Plz给出了详细的答案,因为我已经阅读了一些网站上的连接但没有正确理解这个概念。

2 个答案:

答案 0 :(得分:3)

我不打算引用整篇维基百科文章,而是在SQL Joins上建议你的文章。

  

SQL JOIN子句组合记录   从一个表中的两个或多个表   数据库。它创建了一个集合   可以保存为表格或按原样使用。   JOIN是一种组合方式   使用值从两个表中的字段   每个人都很常见。 ANSI标准SQL   指定四种类型的JOIN:INNER,   外,左,右。特别   案例,表格(基表,视图或   加入表)可以加入到自己中   自连接。

     

程序员编写JOIN谓词   识别加入的记录。   如果评估的谓词为真,   然后产生组合记录   以预期的格式,记录集   或者例如临时表。

有一种较旧的语法使用WHERE子句来暗示INNER JOIN。虽然它可以工作,并且会生成与INNER JOIN语法指定的查询完全相同的查询,但它已被弃用,因为大多数人都觉得它更容易混淆。

以下是MySQL JOIN syntax的文档。

答案 1 :(得分:2)

此查询:

SELECT c.customer_name, o.order_id, o.total
FROM customers c, orders o
WHERE c.id = o.customer_id

和这个

SELECT c.customer_name, o.order_id, o.total
FROM customers c
INNER JOIN orders o ON c.id = o.customer_id

对mysql服务器上执行的内容没有任何区别,但是联接(imho)更具可读性。特别是对于更复杂的连接:

以下是关于该主题的文章:http://www.mysqlperformanceblog.com/2010/04/14/is-there-a-performance-difference-between-join-and-where/