多表查询有三种方式:
1.普通查询-多表(优先选择)
首先创建两个表,第一个表用于注册用户,如下所示,
第二个表用于发帖,如下所示,
此时这两个表是没有任何关系的,在指定位置加一个字段,用after关键字,指令如下:
然后往两个表中插入如下数据,
user表中的数据,
post表中的数据,
现在想要查询发帖的用户有哪些,以及发帖的内容,其指令如下:
这是最简单最直接的多表查询。
查询每个用户发了多少篇帖子,语句如下,
聚合之前一定要分组group by,分组的依据可以是post.uid也可以是user.id或者其它可以区分用户身份的字段。
2.嵌套查询-多表
在普通多表查询的结果中,distinct可以将数据唯一化,
唯一化
为达到同样的查询效果,就诞生了嵌套查询的方式,
3.左链接查询-多表
普通查询中,对于没有发帖的人会自动的被过滤掉,为了解决这个问题,可以使用左链接的方式,会查出所有的用户,如果没有属性值,则以NULL填充,如下所示,
这种方式可以将发生关系的数据表(关系数据库)中的需要全盘显示的放在最左边,而与之匹配的放在右边,如果没有与之对应的项,就以NULL填充。
如果只显示每个用户的第一条数据,可以使用聚合group by命令,命令如下,
基于多表查询的三种方式中,最先应该使用普通多表查询,因为它速度相对比较快,占用资源比较少。