MySQL中JOIN的用法

MySQL中JOIN的用法JOIN 用于连表查询 主要有 5 种用法 下面分别演示这 5 种用法随便建 2 张表 结构如下字段 col1 用来使两张表有一个同名字段的 但其实没什么用 一 笛卡尔积 CROSSJOINCRO 使两张表的所有字段直接进行笛卡尔积 假设表 1 有 m 条数据 表 2 有 n 条数据 则结果数量为 m n 条 SELECT FROMtab1CROS 结果二 内连接 INNERJOIN 内连接需要用 ON 来指定两张表需要比较的字段 最终结果只显示满足条件的数据

JOIN用于连表查询,主要有5种用法。下面分别演示这5种用法

随便建2张表,结构如下

MySQL中JOIN的用法              MySQL中JOIN的用法 

字段col1用来使两张表有一个同名字段的(但其实没什么用,因为查询条件都需要用ON来指定,这里只是说明一下如果有相同的字段名也没什么影响)

一、笛卡尔积:CROSS JOIN

CROSS JOIN使两张表的所有字段直接进行笛卡尔积,假设表1有m条数据,表2有n条数据,则结果数量为m*n条

SELECT * FROM tab1 CROSS JOIN tab2

结果

MySQL中JOIN的用法

二、内连接:INNER JOIN

内连接需要用ON来指定两张表需要比较的字段,最终结果只显示满足条件的数据

SELECT * FROM tab1 INNER JOIN tab2 ON tab1.id1 = tab2.id2

 结果

MySQL中JOIN的用法

注意到内连接只把满足ON条件的数据相连接,与笛卡尔积不同

三、左连接:LEFT JOIN

左连接可以看做在内连接的基础上,把左表中不满足ON条件的数据也显示出来,但结果中的右表部分中的数据为NULL

SELECT * FROM tab1 LEFT JOIN tab2 ON tab1.id1 = tab2.id2

结果

MySQL中JOIN的用法  

四、右连接:RIGHT JOIN

右连接就是与左连接完全相反

SELECT * FROM tab1 RIGHT JOIN tab2 ON tab1.id1 = tab2.id2

结果

MySQL中JOIN的用法  

五、全连接:OUTER JOIN

全连接就是左连接和右连接的并集,但是MySQL中并不支持全连接的写法

SELECT * FROM tab1 OUTER JOIN tab2 ON tab1.id1 = tab2.id2

不过可以用UNION联合左连接和右连接的结果来代替

SELECT * FROM tab1 LEFT JOIN tab2 ON tab1.id1 = tab2.id2 UNION SELECT * FROM tab1 RIGHT JOIN tab2 ON tab1.id1 = tab2.id2

结果

MySQL中JOIN的用法

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232766.html原文链接:https://javaforall.net

(0)
上一篇 2025年9月16日 上午8:01
下一篇 2025年9月16日 上午8:22


相关推荐

  • vue 路由嵌套_vue多级路由嵌套

    vue 路由嵌套_vue多级路由嵌套嵌套路由有时候在路由中,主要的部分是相同的,但是下面可能是不同的。比如访问首页,里面有新闻类的/home/news,还有信息类的/home/message。这时候就需要使用到嵌套路由。项目结构如下:

    2022年7月29日
    24
  • Vue 父组件向子组件传值

    Vue 父组件向子组件传值当我们将整个页面都拆分了不同的组件以后 这样就会涉及到组件之间的数据传递问题 常见的组件的通信可以分为三类 第一类 父组件向子组件传递数据第二类 子组件向父组件传递数据第三类 兄弟组件的数据传递 下面 我们先来看一下父组件向子组件传递数据的情况第一 子组件内部通过 props 接收传递过来的值 Vue component menu item props title props 后面跟一个数组 数组中的内容为字符串 这个字符串可以当做属性类使用 temp

    2026年3月18日
    2
  • Debian 使用VSFtpd安装配置架设FTP服务器「建议收藏」

    Debian 使用VSFtpd安装配置架设FTP服务器「建议收藏」Vsftpd的安装:aptitudeupdate//更新数据源列表aptitudeinstallvsftpd//安装vsftpdVsftpd的文件结构:/usr/sbin/vsftpd—-VSFTPD的主程序/etc/init.d/vsftpd—-启动脚本/etc/vsftpd.conf—-主配置文件/etc/pam…

    2022年7月21日
    17
  • 如何守住你的年终奖?

    如何守住你的年终奖?

    2021年6月29日
    76
  • 单向链表和双向链表分析与操作

    单向链表和双向链表分析与操作单链表和双链表链表结构 优点 1 在程序中使用数组之前 必须事先知道数组的大小 增加数组的大小是一个耗时的过程 在运行时几乎不可能扩展数组的大小 而链表不需要提前声明链表的大小 链表的大小是随着使用的过程逐步增大的 2 在空间的利用上链表相比数组要更加灵活 不会造成内存的大量浪费 3 向链表中插入或从链表中删除一项的操作不需要移动很多项 只涉及常数个节点链的改变 时间复杂度为 O 1 缺点 由于在链表中 仅仅只有头节点和尾节点是可见的 因此要想查找某个节点 必须从头节点或尾节点一路找下去 时间

    2026年3月16日
    3
  • SpringBoot是什么?

    SpringBoot是什么?一、SpringBoot是什么?springboot是spring开源组织下的子项目,是spring组件一站式解决方案,主要是简化了使用spring的难度,节省了繁重的配置,提供了各种启动器,开发者能快速上手。二、SpringBoot的优点1独立运行springboot内嵌了各种servlet容器,Tomcat、Jetty等,现在不再需要打成war包部署到容器中,springboot只要…

    2022年8月20日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号