我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql中的自连接与join关联

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql中的自连接与join关联

mysql自连接

mysql有时在信息查询时需要进行对自身连接(自连接),所以我们需要为表定义别名。

我们举例说明,下面是商品采购表,我们需要找到采购价格比惠惠高的所有信息。

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

SELECT * FROM shoping WHERE price>27

可想而知,这是有多么简单,假设你并不知道数据库表详细数据或者数据量相当庞大呢?

作为一个数据库管理员,我们就要用别的方式迅速找出所需要的数据。

分步查询

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

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

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

自连接方式

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

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

注意点:

  • 别名 a,b虽然名称不同,但是同一个表,定义别名的目的是更方便在自身进行删选。
  • 执行select通过(中间表)所得到的b.*,,就是最终结果。

子查询

子查询也是常用的一种方式,就是在select里嵌套select。

实现代码如下:

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

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

JOIN

INNER JOIN

内关联的主要作用是在表中存在至少一个匹配时,就返回结果集,这里的inner join和join作用相同,所以一起介绍。

下面给出两张表,分别为goods和category表:

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

LEFT JOIN

LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

做项目时建议使用左关联。但是存在很多表关联的,一个表对a是左连接,但同时对b是右连接,这时加上右连接,写起来可能方便一些。

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

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

RIGHT JOIN

RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

套用一开始的两张表进行右关联查询:

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

对于多表关联的情况,就是多加几条关联语句。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网(www.lsjlt.com)。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql中的自连接与join关联

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql中的自连接与join关联

目录mysql自连接分步查询自连接方式子查询JOININNER JOINLEFT JOINRIGHT JOIN总结mysql自连接mysql有时在信息查询时需要进行对自身连接(自连接),所以我们需要为表定义别名。我们举例说明,下面是商品
mysql中的自连接与join关联
2024-09-05

mysql中join关联查询的方法是什么

在MySQL中,可以使用JOIN关键字来进行关联查询。JOIN关键字用于根据两个或多个表中的列之间的关系,将数据从这些表中连接在一起。JOIN关键字有多种类型,包括INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL J
mysql中join关联查询的方法是什么
2024-05-21

MySQL中的索引、左连接、右连接、join、sql执行顺序

逻辑架构:  1、连接层  2、服务层  3、引擎层(插拔式)  4、存储层存储引擎:  常用的有:MyISAM、InnoDB  查看命令:show variables like "%storage_engine%";索引:【单值、复合】 创建索引:creat
MySQL中的索引、左连接、右连接、join、sql执行顺序
2017-09-12

mysql中全连接full join...on...的用法说明

目录mysql中全连接full join...on...用法mysql中join连接有哪几种?join有哪几种?总结mysql中全连接full join...on...用法大部分开发者可能会困惑,为javascript什么我的sql语句怎
2023-03-20

MySQL中JOIN连接的基本用法有哪些

这篇文章主要介绍“MySQL中JOIN连接的基本用法有哪些”,在日常操作中,相信很多人在MySQL中JOIN连接的基本用法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL中JOIN连接的基本用法
2023-06-30

MySQL中多个left join on关联条件的顺序说明

目录mysql多个left join on关联条件顺序结论案例SQL数据使用left join的on后查询碰到的大坑使用 WHERE使用 LEFT JOIN ...... ON ......原因 MySQL多个left join on关联
2022-11-19

MySQL与PHP的自连接怎么实现

本篇内容介绍了“MySQL与PHP的自连接怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!自连接自连接 (Self Join) 是一种
2023-06-29

如何通过索引提升PHP与MySQL的连接和关联查询效率?

在PHP和MySQL的开发中,连接和关联查询是常见且重要的操作。一个高效的连接和关联查询能够大大提高程序的性能和响应速度。本文将介绍如何通过索引来优化PHP与MySQL之间的连接和关联查询效率,并提供具体的代码示例。一、优化连接查询连接查询
2023-10-21

MySQL与PHP中的表连接怎么用

这篇文章给大家分享的是有关MySQL与PHP中的表连接怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。表连接表连接 (JOIN) 是在多个表之间通过连接条件. 使表之间发生关联, 进而能从多个表之间获取数据.
2023-06-29

MySQL SSL 连接与数据安全性的关系解析

MySQL SSL 连接与数据安全性的关系解析随着互联网的发展,数据安全性成为了一个越来越重要的问题。对于数据库中的敏感信息,如用户密码、个人隐私等,保护数据的安全性尤为重要。在传统的网络连接中,数据传输是明文的,容易受到黑客攻击。为了解决
2023-10-22

MySql的回顾五:多表查询下(内联/左外/右外/自连接/交叉)-1999语法

好好吃饭,好好休息,听着很简单,实际落实缺失不那么容易。       继续回顾MySql的多表查询之1999语法#二,SQL1999语法语法: SELECT 查询列表 FROM 表1 别名 【连接类型】 JOIN 表2 别名 ON 链接
MySql的回顾五:多表查询下(内联/左外/右外/自连接/交叉)-1999语法
2018-11-06

编程热搜

目录