mysql 两张表合并查询_一看就懂MySQL繁琐的合并表

df7fe1676c67c89dc88b586e4a2434d1.png

表的合并,在SQL里又叫做表的连接。

7d46905e1f500910474c201c12828c2f.png

多表查询:

指的是将两个以上的数据表通过关键字段连接在一起,从不同表中取不同字段进行查询的方法。

关键字段:

1、相连的两表中都有能匹配上的关键字段;

2、表中的关键字段最好是主键,即:不重复,不为空值;

3、如果不是主键就需要用到联合主键,即两表中两个字段联合起来作关键字段。


一、内连接查询

f823f4fb34c7b396fc2ae2cc009eeefe.png

内连接:inner join 简写 join,按照内连接合并两个表,返回两个表中主键相同的行。

通用代码:

SELECT 

将上面的表1和表2进行内连接

#

一对一连接:只要找到关键字段(学号)相同的数据,横向连接起来就可以;

5a559264c0449480e431f7b2ec846f05.png

多对多连接:连接关键字段(学号)相同的数据的,但是由于相同学号的数据多于1个,所以最终结果是表相同字段分别和右表的数据相连接。

行数是:左表相同数量和右表相同字段数量相乘,再加上一对一的数量。

ae43c1de00d6f25c965225b88054ab5a.png

二、左连接

fa59c875653543ab4099e99177e7e8b6.png

左连接: 结果中包括左表的所有行,及关键字段与左表相同的右表的行。

通用代码:

SELECT 

将信息表和成绩表进行左连接

#

一对一连接

dc227c9c7623ccea3716f4f8412f0404.png

多对多连接

9a9282c2cd0ef06f48bb4a239f1a34a5.png

左连接:学号与左表一致,而不包含右表学号为f的学员

三、右连接

2237a49d07a547b8143d5f2f49391094.png

右连接: 结果中除了包括与右表关键字段的左表行,还包括右表的所有行

通用代码:

SELECT 

将信息表和成绩表进行右连接

#

一对一连接

48d31d2767f8f53d0f930d668cd8aaad.png

多对多连接

59883f5e0b9362d834d4bcbe84bb5dd7.png

四、纵向连接

两个表纵向连接的条件:两个表必须列数相同;

去重纵向连接

3be1de1077d72e08881dbb1252e2be97.png

union: 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。

通用代码: 用union合并t1与t2表

select 

将两个信息表去重纵向连接

SELECT 

b59ff8165e9454b9455746b94e2f9405.png

不去重纵向连接

d44943fd0a1e00c30529976d902d6211.png

union all:用于合并两个或多个 SELECT 语句的结果集,保留重复行。

通用代码:用union all合并t1与t2表

select 

将两个信息表不去重纵向连接

SELECT 

1db632995b2d78e10954b084c138180e.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值