mysql内连接查询之自连接

连接查询:
当查询数据时,通过连接操作查询出存放在多个表中的不同数据,当两个或者多个表中存在相同意义的字段时,
便可以通过这些字段对不同的表进行连接查询。
自连接:
如果在一个连接查询中,涉及的两个表都是同一个表,这种查询称为自连接查询。自连接是一种特殊的内连接,
它是指相互连接的表在物理上为同一张表,但可以在逻辑上分为两张表。
例:下面是一张公司员工表,要求找出每个员工的上级,并显示员工名和上级名。

mysql内连接查询之自连接
如图,name表示员工名,id表示员工编号,mac表示上级编号
mysql内连接查询之自连接
此时,员工表和上级表在同一个表中,应该用到自连接,仔细观察可以发现字段id和字段mac有关联,
因此逻辑上可以把一张表看作两张表
emp a 员工表
mysql内连接查询之自连接
emp b 上级表
mysql内连接查询之自连接
sql语句
mysql内连接查询之自连接
查询结果
mysql内连接查询之自连接
可以发现员工名和上级名反了。
错误在哪呢?其实最后的等值条件错了,
两张表的关系为 员工的上级编号=上级的员工编号
所以修改sql为
mysql内连接查询之自连接
查询结果
mysql内连接查询之自连接
查询正确
总结:关于自连接应该理解它是把 一张表看作两张表关键在于找两张表的关系,只要能找到关系,就能够写出sql语句。

Original: https://www.cnblogs.com/-xiaopeng1/p/14379397.html
Author: 江公
Title: mysql内连接查询之自连接

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/583034/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 四年测试的面试题分享

    其实想说为什么每次面试都要先来点自我介绍,说来说去简历上都有,我曾想过不能快速进入面试阶段嘛 我的专业技能: 基本上这些专业技能是在工作上用过或者自己摸索过,实战经验比较少,下面是…

    Linux 2023年6月8日
    088
  • shell笔记

    shell脚本学习笔记 1.Shell入门简介 Shell是操作系统的最外层, Shell可以合并编程语言以控制进程和文件,以及启动和控制其它程序。shell通过提示您输入,向操作…

    Linux 2023年6月7日
    077
  • std::map自定义类型key

    故事背景:最近的需求需要把一个结构体struct作为map的key,时间time作为value,定义:std::map 技术调研:众所周知,map是STL库中常用的关联式容器,底层…

    Linux 2023年6月13日
    0135
  • SQLI-LABS(Less-9、10)

    Less-9(GET-Blind-Time based-Single Quotes) 打开 Less-9页面,可以看到页面中间有一句 Please input the ID as …

    Linux 2023年6月6日
    0103
  • shell中的##*,%%*问题

    假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt 可以用${ }分别替换得到不同的值:${file#/}:删掉第一个 / 及其左边的字符串…

    Linux 2023年5月28日
    074
  • Python闭包

    前言 学习Python的单例实现的时候,遇到了下面这样的代码。很不理解为什么局部变量 _instance没有重新初始化。后来看到有人说这是闭包,于是又去了解了下 闭包。没想到闭包竟…

    Linux 2023年6月7日
    098
  • LeetCode-16. 最接近的三数之和

    题目来源 题目详情 给你一个长度为 n 的整数数组 nums和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。…

    Linux 2023年6月7日
    0108
  • Xftp 远程工具的使用与jdk 安装(Linux最小安装版)

    Xftp 的安装使用 下载链接:Xftp7 – Dominic 的蓝奏云分享 安装和注册步骤可参考 Xshell:Linux 最小安装与 Xshell 远程工具的使用 …

    Linux 2023年6月8日
    0126
  • linux mv 命令中断的解决办法

    背景:使用mv对服务器文件进行迁移的过程中,因为网络中断,所以迁移到一半被停止了。 现状:有一部分文件没有迁移完,但是文件夹已经存在了,重新mv提示文件夹已经存在,切已经有文件,所…

    Linux 2023年5月27日
    0114
  • layui实现多图上传,支持拖拽上传

    示例:支持多图上传,支持拖拽上传,下方有文件上传信息提示 html代码: <div class="layui-upload"> <div cl…

    Linux 2023年6月7日
    096
  • C++复制构造函数,类型转换构造函数,析构函数,引用,指针常量和常量指针

    复制构造函数形如className :: className(const &) / className :: className(const className &…

    Linux 2023年6月7日
    092
  • Windows 下日志保存至Linux rsyslog日志服务器

    一、 下载安装 通过https://www.rsyslog.com/windows-agent/windows-agent-download/下载客户端后,按照默认安装完成后即进行…

    Linux 2023年6月6日
    0105
  • 【Example】C++ 接口概念讲解及例子演示

    C++ 和 Java 不同的是,C++ 没有 interface 关键字。对于很多新手来说,C++ 当中接口的概念不容易像 Java 当中那样被理解。 然而接口是面向对象编程当中的…

    Linux 2023年6月13日
    096
  • OpenStack 创建自定义的QCOW2格式镜像

    一、安装KVM虚拟机 1.1 虚拟机安装虚拟化软件包 注意:虚拟机指的是CentOS7.8 #挂载光盘 [root@cloudcs ~]# mount /dev/cdrom /mn…

    Linux 2023年6月8日
    090
  • 软件测试基础理论

    软件基础的理论 一, 什么是软件产品 它是一个逻辑产品,没有实体,包括程序,文档和数据,需要通过终端设备才能体现出来功能和作用 二, 软件产品的中间过程文档 客户需求 &#…

    Linux 2023年6月7日
    088
  • 网络安全中常用浏览器插件、拓展

    引言 现在的火狐、Edge( Chromium内核)、Chrome等浏览器带有插件、拓展(Plugin)的功能。这些插件中有的可以过滤广告,有的提供便捷的翻译,有的提供JavaSc…

    Linux 2023年6月6日
    094
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球