MySQL多表查询

多表查询有三种方式:
1.普通查询-多表(优先选择)
首先创建两个表,第一个表用于注册用户,如下所示,
这里写图片描述
第二个表用于发帖,如下所示,
这里写图片描述
此时这两个表是没有任何关系的,在指定位置加一个字段,用after关键字,指令如下:
这里写图片描述
然后往两个表中插入如下数据,
user表中的数据,
user表
post表中的数据,
post表
现在想要查询发帖的用户有哪些,以及发帖的内容,其指令如下:
多表查询中的普通查询
这是最简单最直接的多表查询。
查询每个用户发了多少篇帖子,语句如下,
这里写图片描述
聚合之前一定要分组group by,分组的依据可以是post.uid也可以是user.id或者其它可以区分用户身份的字段。
这里写图片描述

2.嵌套查询-多表
在普通多表查询的结果中,distinct可以将数据唯一化,
这里写图片描述
唯一化
这里写图片描述
为达到同样的查询效果,就诞生了嵌套查询的方式,
这里写图片描述
3.左链接查询-多表
普通查询中,对于没有发帖的人会自动的被过滤掉,为了解决这个问题,可以使用左链接的方式,会查出所有的用户,如果没有属性值,则以NULL填充,如下所示,
这里写图片描述
这种方式可以将发生关系的数据表(关系数据库)中的需要全盘显示的放在最左边,而与之匹配的放在右边,如果没有与之对应的项,就以NULL填充。
如果只显示每个用户的第一条数据,可以使用聚合group by命令,命令如下,
这里写图片描述

基于多表查询的三种方式中,最先应该使用普通多表查询,因为它速度相对比较快,占用资源比较少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值