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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 谷歌chrome浏览器被hao123 360等劫持问题解决方案

    谷歌chrome浏览器被hao123 360等劫持问题解决方案1.先chrome://version能看到下面这一串“C:\ProgramFiles\Google\Chrome\Application\chrome.exe”–flag-switches-begin–flag-switches-end–origin-trial-disabled-features=SecurePaymentConfirmationhttp://hao.360.com/?src=lm&ls=n4e1d7e8c992.复制上面这一串3.打开4.在标记处粘贴刚

    2022年7月14日
    30
  • 隐马尔可夫模型_基于hmm模型外汇预测

    隐马尔可夫模型_基于hmm模型外汇预测隐马尔科夫模型,HiddenMarcovModel,是可用于标注问题的统计学习模型,描述由隐藏的马尔科夫链随机生成观测序列的过程,属于生成模型,是一种比较重要的机器学习方法,在语音识别等领域有重要的应用。 本文不打算使用书面的一大堆公式来说明,本人对公式无感,能用例子说明的根本不想碰公式,不知道是不是霍金说过,多加一条公式就会损失一大片读者。PS:不管有没有说过了,是这个意思,what

    2022年9月30日
    1
  • 为什么我使用了索引,查询还是慢?「建议收藏」

    为什么我使用了索引,查询还是慢?

    2022年2月12日
    102
  • 毕业前写了20万行代码,让我从成为同学眼里的面霸

    毕业前写了20万行代码,让我从成为同学眼里的面霸作者:小傅哥博客:https://bugstack.cn沉淀、分享、成长,让自己和他人都能有所收获!????一、前言20万行代码写完,毕业了找一份工作不是问题!刚一毕业因为找不到工作,就得报名去参加Java培训的大有人在。并不是说参加培训就不好,只不过以你现在这个毕业的时间点参加,就会显得特别匆忙。因为你的压力既来自于培训还需要花家里一笔不小的费用,也有同班同学已经找到一份不错的工作开始赚钱的比对。大学四年其实有足够的时间让你学会编程,也能从一个较长时间的学习中,知道自己适合不适合做程序员。

    2022年6月12日
    21
  • Python实现人脸识别「建议收藏」

    Python实现人脸识别「建议收藏」案例分析概述Python在人脸识别方面功能很强大,程序语言简单高效,下面编程实现一下如何实现人脸识别。分别给出实现代码,作为学习和技术交流。Python基础环境准备参见:https://blog.csdn.net/yan_dk/article/details/89528463案例实现打开显示图片importcv2#opencv库#读…

    2025年5月31日
    2
  • leetcode55跳跃游戏_跳跃游戏leetcode

    leetcode55跳跃游戏_跳跃游戏leetcode给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标

    2022年8月8日
    9

发表回复

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

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