首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql SELECT "FROM t1,t2“-或- "FROM t1 JOIN t2 ON”

mysql SELECT "FROM t1,t2“-或- "FROM t1 JOIN t2 ON”
EN

Stack Overflow用户
提问于 2012-04-19 02:44:24
回答 4查看 5.8K关注 0票数 1

这些查询之间有什么不同?我应该选择哪一个?为什么?

代码语言:javascript
复制
SELECT
t1.*,
t2.x
FROM
t1,
t2
WHERE
t2.`id` = t1.`id`

代码语言:javascript
复制
SELECT
t1.*,
t2.x
FROM
t1
INNER JOIN                                                  # LEFT JOIN ?
t2
ON t2.`id` = t1.`id`

使用逗号和使用左连接有相同的效果吗?

太丢人了。这是我多年来第一次问自己这个问题。我曾经使用过第一个版本,但现在我感觉在我的第一个SQL归纳中遗漏了一些行。;)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-19 02:48:30

“逗号”语法等同于内部连接语法。无论您如何请求查询,查询优化器都应该为您运行相同的查询。一般建议使用JOIN语言进行连接,并使用WHERE语言进行过滤,因为这会使您的意图更清晰

票数 0
EN

Stack Overflow用户

发布于 2012-04-19 02:47:17

查询是相同的,第一个只是第二个的简写语法。LEFT JOIN是完全不同的东西。

INNER JOIN仅显示这两个表共有的记录。LEFT JOIN从左表中获取所有记录,并将其与右表中的记录进行匹配。如果右表中没有匹配的记录,则会选择NULL来代替它们。

票数 0
EN

Stack Overflow用户

发布于 2012-04-19 02:53:42

内部联接是在第二个表中跳过空(null)结果的左联接。

当一切都使用where子句完成时,查询优化器有更多的可能性。一些rdbms不支持像natural join和其他join这样的命令,所以使用"where“是可以真正依赖的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10215882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档