MySQL多表查询
2015-09-26 15:51
344 查看
多表查询有三种方式:
1.普通查询-多表(优先选择)
首先创建两个表,第一个表用于注册用户,如下所示,
第二个表用于发帖,如下所示,
此时这两个表是没有任何关系的,在指定位置加一个字段,用after关键字,指令如下:
然后往两个表中插入如下数据,
user表中的数据,
post表中的数据,
现在想要查询发帖的用户有哪些,以及发帖的内容,其指令如下:
这是最简单最直接的多表查询。
查询每个用户发了多少篇帖子,语句如下,
聚合之前一定要分组group by,分组的依据可以是post.uid也可以是user.id或者其它可以区分用户身份的字段。
2.嵌套查询-多表
在普通多表查询的结果中,distinct可以将数据唯一化,
唯一化
为达到同样的查询效果,就诞生了嵌套查询的方式,
3.左链接查询-多表
普通查询中,对于没有发帖的人会自动的被过滤掉,为了解决这个问题,可以使用左链接的方式,会查出所有的用户,如果没有属性值,则以NULL填充,如下所示,
这种方式可以将发生关系的数据表(关系数据库)中的需要全盘显示的放在最左边,而与之匹配的放在右边,如果没有与之对应的项,就以NULL填充。
如果只显示每个用户的第一条数据,可以使用聚合group by命令,命令如下,
基于多表查询的三种方式中,最先应该使用普通多表查询,因为它速度相对比较快,占用资源比较少。
1.普通查询-多表(优先选择)
首先创建两个表,第一个表用于注册用户,如下所示,
第二个表用于发帖,如下所示,
此时这两个表是没有任何关系的,在指定位置加一个字段,用after关键字,指令如下:
然后往两个表中插入如下数据,
user表中的数据,
post表中的数据,
现在想要查询发帖的用户有哪些,以及发帖的内容,其指令如下:
这是最简单最直接的多表查询。
查询每个用户发了多少篇帖子,语句如下,
聚合之前一定要分组group by,分组的依据可以是post.uid也可以是user.id或者其它可以区分用户身份的字段。
2.嵌套查询-多表
在普通多表查询的结果中,distinct可以将数据唯一化,
唯一化
为达到同样的查询效果,就诞生了嵌套查询的方式,
3.左链接查询-多表
普通查询中,对于没有发帖的人会自动的被过滤掉,为了解决这个问题,可以使用左链接的方式,会查出所有的用户,如果没有属性值,则以NULL填充,如下所示,
这种方式可以将发生关系的数据表(关系数据库)中的需要全盘显示的放在最左边,而与之匹配的放在右边,如果没有与之对应的项,就以NULL填充。
如果只显示每个用户的第一条数据,可以使用聚合group by命令,命令如下,
基于多表查询的三种方式中,最先应该使用普通多表查询,因为它速度相对比较快,占用资源比较少。
相关文章推荐
- Mysql经典的“8小时问题”
- mysql读写分离(四)---补充常用配置
- MySQL的大小写敏感性[lower_case_table_names]
- mysql授权用户root使用密码password从指定ip为192.168.1.1的主机连接到mysql服务器
- mysqlbackup 还原特定的表
- LNMP环境搭建——MySQL篇
- MySQL . column_key
- mysql存储过程
- MySQL主从同步原理+部署
- MySql创建本地用户和远程用户 并赋予权限
- 关于mysql中文插入 问号??问题的解决方法!
- MySQL快速复制数据库的方法
- MySQL Cluster(MySQL 集群) 初试
- Mysql 列转行统计查询 、行转列统计查询
- mycat+mysql分片
- MySQL数据库的索引实现
- mysql 字符集乱码及解决方案
- MySQL查看当前数据库库
- MySQL学习笔记20150925时间数据类型以及字符集与varchar(M)M最大值关系
- 如何使用MySQL处理数据——增删改查