MySQL中的分组查询与连接查询语句
来源:互联网 发布:阿里云空间多少钱一年 编辑:程序博客网 时间:2024/05/18 01:00
分组查询 group by
group by 属性名 [having 条件表达式][ with rollup]
“属性名 ”指按照该字段值进行分组;“having 条件表达式 ”用来限制分组后的显示,满足条件的结果将被显示;with rollup 将会在所有记录的最后加上一条记录,该记录是上面所有记录的总和。
1)单独使用
group by 单独使用,查询结果只显示一个分组的一条记录。
实例:
select
*
from
employee
group
by
sex;
将只显示男女两条记录。
2)与group_concat()函数一起使用
每个分组中指定字段值都显示出来
实例:
select
sex,group_concat(
name
)
from
employee
group
by
sex;
显示结果中“女”会显示所有sex为“女”的名字name
sex | group_concat(name)
女 | 小红,小兰
男 | 张三,王五,王六
3)与集合函数一起使用
实例:
select
sex,
count
(sex)
from
employee
group
by
sex;
结果:
sex | count(num)
女 | 1
男 | 3
count()为计算个数的方法。
4)与having一起使用
“having条件表达式”,可以限制输出结果。只有满足条件表达式的结果才显示。
实例:
select
sex,
count
(sex)
from
employee
group
by
sex
having
count
(sex) >= 3;
结果:
sex | count(sex)
男 | 3
“having条件表达式”作用于分组后的记录。
5)按多字段进行分组
select
*
from
employee
group
by
d_id,sex;
查询结果先按d_id分组,再按sex进行分组
6) 与with rollup一起使用
使用with rollup将会在所有记录的最后加上一条记录,这条记录是上面所有记录的总和
实例:
select
sex,
count
(sex)
from
employee
group
by
sex
with
rollup
;
结果:
sex | count(sex)
女 | 1
男 | 5
null | 6
如果是字符串的话,比如姓名就会生成“张三,李四,王五”这种类型的结果,即name总和。
连接查询
将两个及两个以上的表连接起来选取所需数据。
1)内连接查询:
当两个表中具有相同意义的字段值相等时,就查询出该条记录。
实例:
2)外连接查询
select 属性名列表 from 表名1 left|right join 表名2 on 表名1.属性名1=表名2.属性名2;
左连接查询:
进行左连接查询时,可以查出表名1中所指的表中所有记录。而表名2所指表中,只能查询出匹配的记录。
实例:
select num,name,employee.d_id,age,d_name from employee left join department on employee.d_id = department.d_id;
右连接查询:
与左连接相反,可以查询出表名2中的的所有记录,而表名1中所指的表中,只查询出匹配的记录。
PS:使用集合函数查询
集合函数包括count(),sum(),avg(),max()和min()。
1)count()函数
统计记录条数
实例:
select
count
(*)
from
employee;
与group by一起使用
select
d_id,
count
(*)
from
employee
group
by
d_id;
上述语句会先分组后统计。
2) sum()函数
sum()函数是求和函数
实例:
select
num,
sum
(score)
from
grade
where
num= 1001;
select
num,
sum
(score)
from
grade
group
by
num;
sum()只能计算数值类型字段。
3)avg()函数
avg()函数是求平均值函数。
实例:
select
avg
(age)
from
employee;
select
course,
avg
(score)
from
group
by
course;
4)max(),min()函数
求最大值和最小值。
实例:
select max(age) from employee;
select num,course,max(score) from grade group by course;
对于字符串的最大值问题,max()函数是使用字符对应的ascii码进行计算的。
原文链接:http://www.jb51.net/article/81479.htm
- MySQL中的分组查询与连接查询语句
- MySQL中的分组聚合查询
- Mysql中的查询语句
- MySQL中的连接查询
- mysql中的连接查询
- mysql中的连接查询
- mysql中的连接查询
- 分组查询SQL语句
- sql语句分组查询
- sql分组查询语句
- 连接查询和分组查询
- 连接查询和分组查询
- Mysql中的数据分组和子查询
- MySQL基础语句之子查询与连接《图文三》
- Mysql中的DQL查询语句
- mysql的语句分类,查询、子查询及连接查询
- MySQL分组数据与子查询
- mysql的查询、子查询、连接查询、groud by分组查询
- 整合企业spring cloud微服务云架构构建
- 源码学习
- 关于开启CDC实例的二三事
- XCODE中使用Main.Storyboard拉入控件并实现事件(Swift语言)
- AngularJS中(function(a,b){})(a,b)立即函数理解
- MySQL中的分组查询与连接查询语句
- 解决SyntaxError: Non-ASCII character '\xe7' in file demo.py on line 15问题
- 对递归执行过程的简单描述
- 将 Spring Boot 应用迁移到 Java 9 — 模块
- numpy关于文件中数据为混合类型的时候的读取
- hdu 4436 str2int (SAM)(待补)
- 使用一句 sql 实现将一张表中的某一列的值复制到另一列中。
- scala中:: , +:, :+, :::, +++的区别
- 安卓中使用Fresco