• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    深入理解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.priceb.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


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

    总结

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

    您可能感兴趣的文章:
    • MySQL查询优化:连接查询排序limit(join、order by、limit语句)介绍
    • MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程
    • MySQL优化之使用连接(join)代替子查询
    • mysql多个left join连接查询用法分析
    • 在MySQL中使用JOIN语句进行连接操作的详细教程
    • MySQL的LEFT JOIN表连接的进阶学习教程
    • Mysql连接join查询原理知识点
    • MySQL 8.0 新特性之哈希连接(Hash Join)
    • MySQL 8.0.18 Hash Join不支持left/right join左右连接问题
    • Mysql join连接查询的语法与示例
    上一篇:详解Mysql中的视图
    下一篇:mysql处理海量数据时的一些优化查询速度方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    深入理解mysql的自连接和join关联 深入,理解,mysql,的,自连,