这两个查询之间有什么区别:
SELECT `threads`.`id` AS `threads.id` , `posts`.`id` , `posts`.`content`
FROM `threads`
JOIN `posts` ON `threads`.`id` = `posts`.`thread_id`
Run Code Online (Sandbox Code Playgroud)
和
SELECT `threads`.`id` AS `threads.id` , `posts`.`id` , `posts`.`content`
FROM `threads` , `posts`
WHERE `threads`.`id` = `posts`.`thread_id`
Run Code Online (Sandbox Code Playgroud)
他们都返回相同的数据.
WHERE
子句过滤返回的结果集JOIN
,所以这是一个区别。
只要您使用的INNER JOIN
性能和执行计划都没有差异,任何OUTER JOIN
查询都会产生不同的执行计划。
另请注意MySql 在线文档中的内容:
通常,您应该使用 ON 子句作为指定如何连接表的条件,并使用 WHERE 子句来限制结果集中需要哪些行。