sql语句mysql_mysql随笔 -- 基本sql语句

常见查询语句:

select  ....  from .... where  .. group by ... having ... order by .. limit...

输出  获取数据     过滤    分组    过滤       排序   限定个数

以上为书写顺序,以下为执行顺序:

from  ->  where -> group by - >select - > having -> order by -> limit

例如:在select中定义的别名,在其之前是不能出现的;在之后可以再利用。

group by分组:

select * from 表名 group by 字段

表示该表的字段进行分组查询时,只输出该字段分组下的第一个出现的数据。

98441719ab17792fda71ca0cebdf18ea.png

group by与聚合函数count()

出现select count(1) ,classId from stu group by classId,则输出结果为

分组后的对应的和

对比select count(name),如果name中有null,那么count不会记录null直接跳过,判断下一个是否为Null,其他情况二者一致。

select count(distinct name) from stu group by classId

表示按classId分完组后,各自除去相同名字后累加的行数。

聚集函数:

count  --计数

sum  -- 求和

max  -- 最大值

min -- 最小值

avg -- 平均值

group - concat

truncate 表名;//清空表的内容

mysql中 group by的执行机制是先对分组的字段进行排序的,默认升序的

select * from mysql_day1 GROUP BY clid DESC; //改成降序的

having :有时候限定分组条件比对元组限定条件更有用

例:select classId from mysql_day1 group by clid having count(1)>2

实现查询班级人数大于2的班级号

68f724bad5a33d9a9f6bd2ca7369ecb7.png

order by: 对结果集进行排序;

例如: order by clid,id;

先对clid排序,再对id排序(后一个在前一个相同的情况下才排序)

case when ..then..用法:

0a4fa226d13684b909bccb07ae327a9a.png

7642f59772e1b8b77f2a4ec6b99c327c.png

case when 与聚集函数:

a0473cf1cd57d6dd9a92382d0196d964.png

若想查找成

dd9cbf907cb7e2354df78034da32e821.png

利用分组group by后,重新写出三列,利用case when 实现

select name,

max(case when stage = '基础' THEN score ELSE NULL END)as '基础',

max(case when stage = 'sql' THEN score ELSE NULL END)as 'sql',

max(case when stage = 'web' THEN score ELSE NULL END)as 'web'

from scores group by name

注意: 使用聚合函数max的目的是找出分组后的各个字段对应的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值