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


相关推荐

  • cardview属性_RecyclerView

    cardview属性_RecyclerViewCardView是用于实现卡片式布局效果的重要控件,实际上也是一个frameLayout,只是额外提供了圆角和阴影,看上去有立体效果。效果如下:<?xmlversion=”1.0″encoding=”utf-8″?><androidx.cardview.widget.CardViewxmlns:android=”http://schemas.android.com/apk/res/android”xmlns:app=”http:…

    2022年10月11日
    2
  • 如何解决混合云组网难题?

    如何解决混合云组网难题?

    2021年6月9日
    109
  • java中method方法_java修改字体大小

    java中method方法_java修改字体大小LocalDateaThousandDaysLater=hello.plusDays(1000);这个调用后hello会有什么变化?他会改为1000天之后的日期吗?事实上,并没有。plusDays()方法会生成一个新的LocalDate对象,然后将这个新对象赋值给aThousandDaysLater。原来的对象在堆中不会有任何改变。我们说的plusDays方法没有更改调用plusDays方法的

    2025年9月12日
    5
  • VMware中卸载Ubuntu「建议收藏」

    VMware中卸载Ubuntu「建议收藏」1、右键>>管理>>从磁盘中删除2、点击“是”,磁盘路径安装Ubuntu的文件一并删除

    2022年8月30日
    16
  • 深入解析 Java集合类ArrayList与Vector的区别

    深入解析 Java集合类ArrayList与Vector的区别集合类分为两个分支,Collection与Map,其中Collection接口继承了Iterator接口,继承Iterator接口的类可以使用迭代器遍历元素(即Collection接口的类都可以使用),今天我们从相同点、不同点、以及JDK源码等各个方面来深入解析下,底层使用数组实现的两个集合类:ArrayList与Vector的区别与联系区别与联系:1.ArrayList出现于jdk1…

    2022年5月20日
    36
  • 如何证明拉格朗日中值定理的正确性(泰勒公式秒杀高考压轴题)

    欢迎点击「算法与编程之美」↑关注我们!本文首发于微信公众号:”算法与编程之美”,欢迎关注,及时了解更多此系列文章。1问题描述很多人不明白怎样用罗尔定理来证明拉格朗日中值…

    2022年4月18日
    334

发表回复

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

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