码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL中的复合查询与表的内外连接解析


    在MySQL中,复合查询通常指的是涉及多个表或多个查询条件的查询。而表的内外连接(INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL OUTER JOIN,但MySQL不直接支持FULL OUTER JOIN)则是复合查询中常用的连接技术,用于从多个表中检索数据。

    1. 表的内外连接

    1. INNER JOIN (内连接)

      • 返回两个表中满足连接条件的所有行。
      SELECT A.*, B.*
      FROM tableA A
      INNER JOIN tableB B ON A.id = B.tableA_id;
      
    2. LEFT JOIN (左连接)

      • 返回左表中的所有行,以及右表中满足连接条件的行。如果右表中没有匹配的行,则结果中右表的部分包含NULL。
      SELECT A.*, B.*
      FROM tableA A
      LEFT JOIN tableB B ON A.id = B.tableA_id;
      
    3. RIGHT JOIN (右连接)

      • 与LEFT JOIN相反,返回右表中的所有行,以及左表中满足连接条件的行。如果左表中没有匹配的行,则结果中左表的部分包含NULL。
      SELECT A.*, B.*
      FROM tableA A
      RIGHT JOIN tableB B ON A.id = B.tableA_id;
      
    4. FULL OUTER JOIN (全外连接)

      • MySQL不直接支持FULL OUTER JOIN,但可以通过UNION来模拟。
      SELECT A.*, B.*
      FROM tableA A
      LEFT JOIN tableB B ON A.id = B.tableA_id
      
      UNION
      
      SELECT A.*, B.*
      FROM tableA A
      RIGHT JOIN tableB B ON A.id = B.tableA_id
      WHERE A.id IS NULL;
      

    2. 复合查询示例

    假设我们有两个表:orders(订单表)和customers(客户表),我们想要查询每个客户的订单信息(如果有的话)。

    SELECT c.customer_id, c.customer_name, o.order_id, o.order_date
    FROM customers c
    LEFT JOIN orders o ON c.customer_id = o.customer_id;
    

    这个查询会返回所有客户的信息,以及他们的订单信息(如果有的话)。对于没有订单的客户,订单相关的字段(如order_id和order_date)将为NULL。

    注意事项

    • 在使用连接查询时,确保连接条件正确,以避免返回错误或不必要的数据。
    • 使用别名(如上面的A和B)可以使查询更简洁,并减少在查询中重复表名的需要。
    • 在处理大量数据时,连接查询可能会变得很慢。在这种情况下,考虑使用索引来优化查询性能。
  • 相关阅读:
    (十六)数据结构-图的遍历
    Tableau 合集3:格式设置之可视化图显示百分比和提示工具对齐问题
    mysql的分组group by
    leetcode刷题笔记——二分查找
    Log日志详解分析
    第二部分—C语言提高篇_11. 预处理
    从转载阿里开源项目 Egg.js 技术文档引发的“版权纠纷”,看宽松的 MIT 许可该如何用?
    灵魂三问:什么是接口测试,接口测试怎么玩,接口自动化测试怎么玩?
    NC65 sql server 报数据库“xxx”事务日志已满 的解决方案。
    @Controller与@RestController
  • 原文地址:https://blog.csdn.net/qq_33851668/article/details/139614947
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号