首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >join和no join select之间的区别?

join和no join select之间的区别?
EN

Stack Overflow用户
提问于 2009-11-19 18:31:25
回答 7查看 1.8K关注 0票数 1

我看不出下面这两个查询有什么不同:

代码语言:javascript
复制
query_join = select a.id, b.name, a.telephone, a.description  from tb_industry a   left outer join tb_sector b on a.sector_id = b.id 
query_select = select a.id, b.name, a.telephone, a.description from tb_industry a , tb_sector b WHERE a.sector_id = b.id

结果是完全相同的。现在我猜这是可能发生的,但我想得到一些启发,在哪些情况下只有query_join是最好的,在哪些情况下query_condition是最好的?

EN

回答 7

Stack Overflow用户

发布于 2009-11-19 18:44:21

第一个是外连接。这将显示表A中的行,即使表B中没有匹配的行也是如此。假设表包含以下数据:

代码语言:javascript
复制
select a.name, a.sector_id from tb_industry a;

name  sector_id
----  ---------
A     1
B     2
C     3

Select b.id, b.name from tb_sector b;

id  name
--  ----
1   X
2   Y

(请注意,没有id为3的tb_sector行。)

外部连接仍然返回表A中的所有行,其中应该来自表B的值为NULL:

代码语言:javascript
复制
select a.name, a.sector_id, b.name as sector_name
from tb_industry a left outer join tb_sector b on a.sector_id = b.id;

name  sector_id  sector_name
----  ---------  -----------
A     1          X
B     2          Y
C     3

另一个查询(内连接)遗漏了不匹配的行:

代码语言:javascript
复制
select a.name, a.sector_id, b.name as sector_name
from tb_industry , tb_sector b where a.sector_id = b.id;

name  sector_id  sector_name
----  ---------  -----------
A     1          X
B     2          Y

以下查询也是一个内部联接,使用较新的ANSI联接语法:

代码语言:javascript
复制
select a.name, a.sector_id, b.name as sector_name
from tb_industry a
join tb_sector b on a.sector_id = b.id;

name  sector_id  sector_name
----  ---------  -----------
A     1          X
B     2          Y

如果没有OUTER关键字,则连接是内部连接。

票数 4
EN

Stack Overflow用户

发布于 2009-11-19 18:36:07

它们并不相同,尽管它们可能会根据您的数据返回相同的结果。

第一个是左外部连接,因此如果相应的表没有匹配的条目,则将返回行。

第二个实质上是一个内部连接,所以除非两个表都有匹配的条目,否则不会返回行。

这取决于您的偏好,但是当查询比较复杂时,第一种类型的语法更容易阅读。

票数 2
EN

Stack Overflow用户

发布于 2009-11-19 18:35:16

当您想要从从中选择的表中检索所有结果,并在存在匹配项时检索来自左侧或右侧表(LEFT JOIN、right JOIN)的值时,可以使用联接。

当您想要显式匹配时,可以使用查询条件样式。

希望它能帮上忙!w3schools在这方面有一些简单而基本的例子。

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

https://stackoverflow.com/questions/1762333

复制
相关文章

相似问题

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