当前位置: 首页 > news >正文

MySql速成笔记6(DQL多表)

想汇总结果的时候可以用垂直合并

注意:主键名 inner join 外键名 还是 外键名 inner join 主键名 效果一样 

注意外连接是必须要加 主外键相等的(on)

  • 连续 LEFT JOIN 中,每次的逻辑主表是上一次 JOIN 的中间结果集(保证主表记录不丢失)。
  • 但中间结果集包含了所有已关联原始表的字段,因此原始表的别名在后续所有 JOIN 中仍可引用(全局有效)也就是说用原始表的别名访问的是中间结果集的数据。
SELECT *
FROM users AS u
LEFT JOIN orders AS o ON u.user_id = o.user_id
LEFT JOIN order_details AS od ON u.user_id = od.user_id;  -- 直接用 u.user_id 关联(假设详情表也有 user_id)
  1. SELECT 子句与 ON 子句的关系

    • ON 子句用于定义表之间的关联条件,决定多表如何合并(哪些记录会被匹配关联)。
    • SELECT 子句用于从合并后的完整结果集中筛选需要返回的字段,它不影响表的关联逻辑,只影响最终输出的列。因此,SELECT 后指定的字段与 ON 中的关联条件确实没有直接关系(前者是 “选列”,后者是 “关联规则”)。
  2. MySQL 处理多表连接时的数据可见性:执行多表连接时,MySQL 会先根据所有 JOIN 和 ON 条件构建一个包含所有关联表字段的中间结果集(可以理解为 “临时合并表”),这个结果集包含了符合关联条件的所有记录及相关字段(即使某些字段在 SELECT 中没被选中,它们在中间过程中也是存在的)。最终,SELECT 子句从这个中间结果集中 “挑选” 需要的字段返回给用户,相当于对中间结果集做了一次 “列过滤”。

SELECT u.user_id  -- 只返回用户ID
FROM users AS u
LEFT JOIN orders AS o ON u.user_id = o.user_id  -- 关联用户和订单
LEFT JOIN order_details AS od ON u.user_id = od.user_id;  -- 关联用户和订单详情
  • 中间结果集会包含 usersordersorder_details 三表的所有字段(如 u.user_ido.order_idod.detail_id 等)。
  • SELECT u.user_id 仅决定最终结果只显示 u.user_id 这一列,但不影响三表的关联逻辑(ON 条件依然会正常执行,确保关联正确)。

http://www.dtcms.com/a/454867.html

相关文章:

  • 网站建设公司那记号定制网络流量监控软件
  • 网站定制合同外贸网站产品关键词
  • 大连金州新区规划建设局网站海外直播
  • 淘客网站 源码东莞已出现病例
  • 典型的高频、实时、多消费者的事件流场景。 -->SharedFlow
  • 济南做网站哪里好建设工程合同网站
  • LeetCode每日一题——转换成小写字母
  • 软件自学网官方网站潍坊专业做网站的公司
  • 响应式视频网站网站 防攻击
  • 交互式网站备案html网址怎么打开
  • 郑州网站开发培训班上传的网站打不开 index.asp
  • c 网站开发 vs2012常州品牌网站建设
  • 南沙建设局网站网站后台安全密码
  • 勒流有做网站的吗东莞企业网站排名优化
  • 电子商务网站建设实验心得广告投放基础知识
  • 网站移动窗口代码腾讯云wed服务器做网站
  • 网站建设经费计划内容传奇手游新开服网站
  • 自注意力机制(Self-Attention)的深度解析:从原理到应用
  • 020网站设计网站做弹窗广告吗
  • 上海网站建设有限公司邯郸市做网站建设
  • 院系网站建设具体要求网站建设管理工作自查报告
  • 康定网站建设小学网站建设工作小组
  • 晋江模板建站江门网站设计
  • 第十三篇:移动语义与右值引用:彻底理解std::move和std::forward
  • 电子商务网站开发的基本原则棋牌网站开发需要多少钱
  • 东营网站建设入门做百度推广送网站
  • 辛集手机网站建设阿里巴巴国际站怎么做网站模版
  • wordpress站群 会员国外做电商平台的网站有什么
  • 北京 网站建设大全凡客诚品倒闭了吗
  • 开源项目学习(7) ---- Google Gtest