加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MYSQL教程深入理解mysql的自连接和join关联

发布时间:2020-12-12 00:56:22 所属栏目:MySql教程 来源:网络整理
导读:《MYSQL教程深入理解mysql的自连接和join关联》要点: 本文介绍了MYSQL教程深入理解mysql的自连接和join关联,希望对您有用。如果有疑问,可以联系我们。 一、mysql自连接 MYSQL实例 mysql有时在信息查询时需要进行对自身连接(自连接),所以我们需要为表定义

《MYSQL教程深入理解mysql的自连接和join关联》要点:
本文介绍了MYSQL教程深入理解mysql的自连接和join关联,希望对您有用。如果有疑问,可以联系我们。

一、mysql自连接MYSQL实例

mysql有时在信息查询时需要进行对自身连接(自连接),所以我们需要为表定义别名.我们举例说明,下面是商品采购表,我们需要找到采购价格比惠惠高的所有信息.MYSQL实例

MYSQL实例

一般情况我们看到这张表我们第一时间用语句进行操作:MYSQL实例

SELECT * FROM shoping WHERE price>27

可想而知,这是有多么简单,假设你并不知道数据库表详细数据或者数据量相当庞大呢?作为一个数据库管理员,我们就要用别的方式迅速找出所需要的数据.MYSQL实例

分步查询MYSQL实例

最简单的一种方式,也是最容易想到操作:MYSQL实例

SELECT price FROM shopping WHERE name='惠惠' //得出price查询结果为27
SELECT * FROM shopping WHERE price>27

与采用自连接的方式相比,这种方法需要对中间结果进行人工干预,显然不利于程序中的自动处理操作.MYSQL实例

自连接方式:MYSQL实例

SELECT b.* 
from shopping as a,shopping as b
where a.name='惠惠' 
and a.price<b.price 
order by b.id

我们可以获取到如下表信息:MYSQL实例


MYSQL实例

注意点:MYSQL实例

别名 a,b虽然名称不同,但是同一个表,定义别名的目的是更方便在自身进行删选.
MYSQL实例

执行select通过(中间表)所得到的b.*,就是最终结果.
MYSQL实例

子查询MYSQL实例

子查询也是常用的一种方式,就是在select里嵌套select.MYSQL实例

实现代码如下:MYSQL实例

SELECT * FROM shopping 
WHERE price>(select price from 'shopping' where name='惠惠')

所得结果如下所示,可见两种方式所得结果相同:MYSQL实例


MYSQL实例

二、JOINMYSQL实例

INNER JOINMYSQL实例

内关联的主要作用是在表中存在至少一个匹配时,就返回结果集,这里的inner join和join作用相同,所以一起介绍.
下面给出两张表,分别为goods和category表:MYSQL实例

MYSQL实例

MYSQL实例

SELECT * FROM goods INNER JOIN category 
ON goods.id=category.goods_id 
ORDER BY gods.id

结果如下所示:MYSQL实例

MYSQL实例

LEFT JOINMYSQL实例

LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行.做项目时建议使用左关联.但是存在很多表关联的,一个表对a是左连接,但同时对b是右连接,这时加上右连接,写起来可能方便一些.
MYSQL实例

套用一开始的两张表,进行左关联查询:MYSQL实例

SELECT goods.*,category.cate_name 
FROM goods LEFT JOIN category 
ON goods.id=category.goods_id 
ORDER BY goods.id


MYSQL实例

RIGHT JOINMYSQL实例

RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行.套用一开始的两张表进行右关联查询:MYSQL实例

SELECT a.goods_name,a.price,b.*
FROM goods as a
RIGHT JOIN category as b
ON a.id=b.goods_id
ORDER BY b.id


MYSQL实例

对于多表关联的情况,就是多加几条关联语句.MYSQL实例

总结MYSQL实例

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程之家PHP的支持.MYSQL实例

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读