【问题标题】:what is difference between 'where' and different 'joins' in mysql? [duplicate]mysql中的'where'和不同的'joins'有什么区别? [复制]
【发布时间】:2010-07-18 15:07:03
【问题描述】:

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

联接总是让我感到困惑..谁能告诉我不同​​联接之间有什么区别,哪个最快,何时使用哪个联接以及联接和 where 子句有什么区别?请给你详细的答案,因为我已经阅读了一些网站上的加入但没有正确理解这个概念。

【问题讨论】:

    标签: mysql join


    【解决方案1】:

    与其引用整篇 Wikipedia 文章,不如在 SQL Joins 上推荐您的文章。

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

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

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

    这是MySQL JOIN syntax 的文档。

    【讨论】:

      【解决方案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 服务器上执行的内容没有区别,但连接(恕我直言)更具可读性。特别是对于更复杂的连接:

      这里有一篇关于这个话题的文章:http://www.mysqlperformanceblog.com/2010/04/14/is-there-a-performance-difference-between-join-and-where/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-18
        • 2017-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-19
        • 2013-09-12
        相关资源
        最近更新 更多