mysql外联最新的一条数据_MySQL内外联结

本文介绍了MySQL中的内联结、左联结和右联结。内联结只显示匹配的数据行,而外联结(左联和右联)会显示未匹配的数据行。左联结确保左数据表的所有数据行都在结果集中,即使右数据表没有匹配项,反之亦然。外联结常用于查找在另一数据表中缺失的记录。
摘要由CSDN通过智能技术生成

c3a77de72779cef2deb91d09d6076719.png

一、内联结(INNER JOIN)

MySQL内联结使用INNER JOIN将多个数据表t1,t2隔开,结果是t1里的每一个数据行将与t2里的每一个数据行组合。

3bcc9a2ab06b8e37e385de37de23e06a.png

42716b233e2cb6046a66f092318af014.png

逗号连接符、CROSS JOIN和JOIN联结类型类似于INNER JOIN。

d11088633b03266748f82eda85f6c27b.png

c6c6ca5c2706c1f70894a5d3c915536a.png

2e816db3776355ecaaaa1b1c7f1f7e21.png

INNER JOIN、CROSS JOIN和JOIN(注意,不包括逗号操作符) 还支持另外几种用来表明如何对数据表里的数据列进行匹配的语法变体:

1、用一条ON子句代替WHERE子句。

6508276145f0faf004b1f3c4c5d52e5c.png

2、使用USING()子句,类似于ON,但要求被联结的数据列必须是同名的。

二、左联结和右联结(外联结)

内联结只显示在两个数据表里都能找到匹配的数据行。

外联结除了显示同样的匹配结果,还可以把其中一个数据表在另一个数据表里没有匹配的数据行也显示出来。

外联结分左联结和右联结两种。

左联结意思是把左数据表在右数据表里没有匹配的数据行也显示出来。

右联结意思是把右数据表在左数据表里没有匹配的数据行也显示出来。

左联结工作原理:

前提:必须给出用来匹配两个数据表里的数据行的数据列(这里t1.i1 = t2.i2)。

如果左数据表的某个数据行与来自右数据表的某个数据行匹配时,那么这两个数据行的内容就会被选取为一个输出数据行。如果来自

左数据表的某个数据行在右数据表里找不到匹配,它就会被选取作为一个输出数据行,此时与它联结的是一个来自右数据表里的"假"数据行,这个“假”

数据行的所有数据列都包含NULL值。

换一句话说,在LEFT JOIN操作里,来自左数据表的每一个数据行在结果集里都有一个对应的数据行,不管它在右数据表里有没有匹配。

在结果集里,在右数据表里没有匹配的结果数据行有这样的特征:来自右数据表的所有数据列都是NULL值。

这个特征可以让你知道右数据表里缺少了哪些数据行。

786b1697d89d363b825771acb6039670.png

左联结LEFT JOIN很有用,尤其是在你只想找出在右数据表里没有匹配的左数据表的行时,增加一条WHERE语句,让它把右数据表的数据列全部是NULL值(也就是那些在一个数据表里有匹配,但在另一个数据表里没有匹配)的数据行筛选出来。

a01de89b3a57cf92ee516893a7090bb4.png

一般来说,你把右数据表里值为NULL的数据列显示出来没有什么意义,可以在SELECT语句里输出列清单里剔除:

010551fc2701e538a4c297aa6ef3f65f.png

内容来源于网络如有侵权请私信删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值