首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果您可以在没有联接的情况下从多个表中进行选择,那么为什么要使用联接?

如果您可以在没有联接的情况下从多个表中进行选择,那么为什么要使用联接?
EN

Stack Overflow用户
提问于 2016-01-17 17:51:26
回答 2查看 91关注 0票数 1

以下查询都从posts表和users表中选择数据。第一个查询使用一个联接,第二个查询没有.我的问题是你为什么要用连接?

使用联接查询:

代码语言:javascript
运行
复制
SELECT u.*, p.* FROM users AS u
JOIN posts AS p ON p.user_id=u.user_id
WHERE u.user_id=1

查询时没有:

代码语言:javascript
运行
复制
SELECT u.*, p.* FROM users AS u, posts AS p
WHERE p.user_id=u.user_id
AND u.user_id=1
EN

回答 2

Stack Overflow用户

发布于 2016-01-17 17:59:17

第二个查询是使用一个联接。这就是逗号在users AS u, posts AS p中的含义。这是一个隐式连接(因为您没有显式地使用JOIN关键字,但得到了它的效果),也称为CROSS JOIN,意思是“左表的每一行,与右表中的每一行连接”。

JOIN ... ON语法的使用(在我看来)更加明确和可读性更强,这在很大程度上是因为将连接条件从WHERE子句移动到直接附加到JOIN,并且为其他具有不同语义的连接类型(LEFT JOIN、默认和INNER JOIN)打开了语法。

票数 2
EN

Stack Overflow用户

发布于 2016-01-17 18:00:49

这纯粹是一种风格的选择。服务器将对这两个语句进行相同的解释。

,子句中使用逗号( FROM )时,这是在隐式地使用CROSS JOIN

如果WHERE clause中有很多条件,那么可以更清楚地区分用于连接表(tableA.ID = tableB.tableA_id)的条件和用于筛选的条件。您可以通过在显式JOIN旁边放置连接条件来实现这一点。

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

https://stackoverflow.com/questions/34841580

复制
相关文章

相似问题

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