【问题标题】:Is this the same as JOIN in MYSQL query?这和 MYSQL 查询中的 JOIN 一样吗?
【发布时间】:2011-11-21 02:43:21
【问题描述】:

这是我的查询:

这看起来有效吗?使用 JOIN 有什么好处吗?还是一样?

$query_Recordset2 = 
"SELECT cute_news.category, cute_news.id, cute_story.short, cute_story.post_id, cute_news.date, cute_news.url, cute_news.title 
FROM cute_news, cute_story 
WHERE cute_news.id = cute_story.post_id AND category LIKE '10%' 
ORDER BY date DESC LIMIT 0,35";

【问题讨论】:

  • 定义表格之间的关系

标签: mysql join query-optimization


【解决方案1】:

此问题可能与that one 重复。

隐式 JOIN 不携带意图,因此可读性较差。

您的查询将导致与以下内容完全相同的结果:

SELECT cute_news.category, cute_news.id, cute_story.short, cute_story.post_id, cute_news.date, cute_news.url, cute_news.title 
FROM cute_news
 INNER JOIN cute_story ON cute_story.post = cute_news.id
WHERE category LIKE '10%' 
ORDER BY date DESC LIMIT 0,35

但后一个查询更具可读性,因为您将 JOIN 谓词与过滤器分开并表达查询背后的逻辑。

【讨论】:

  • +1 专为Implicit JOINs do not carry the intent, and are thus less readable.
【解决方案2】:

“隐式连接表示法”只是列出要连接的表(在 SELECT 语句的 FROM 子句中),使用逗号分隔它们。因此,它指定了一个交叉连接,并且 WHERE 子句可以应用额外的过滤谓词(其功能与显式表示法中的连接谓词相当)

来自wikipedia

换句话说,它是一样的

【讨论】:

    【解决方案3】:

    如果您的意思是FROM 子句有多个表,以逗号分隔,那么是的,它与INNER JOIN 基本相同。

    但是,这是旧语法;推荐使用INNER JOIN,比较标准。

    此外,旧语法的问题在于,将连接字段与WHERE 子句的其余部分结合起来,会使查询难以阅读,并且在某些情况下会导致解析器额外工作。最好在ON 子句中为每个JOIN 明确声明关系。

    【讨论】:

      猜你喜欢
      • 2012-03-24
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-05
      • 1970-01-01
      • 2018-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多