开始打鸡血了
- 语法顺序
select distinct 字段1,字段1,字段3 from 库.表
where 条件
group by 分组条件
having 过滤
order by 排序字段1,排序字段2
limit n;
- 执行顺序
先找表(from)
过滤数据(where)
分组(group by) [没有group by 整体算作一组]
过滤 (having)
去重(distinct)
排序 (order by)
限制查询数据条数(limit)
- group by 使用的聚合函数
max() 最大
min() 最小
count() 统计
avg() 平均
sum() 求和
group_concat() 分组后查看组内所有成员
select 分组字段,group_concat(表字段) from 表 group by 分组字段
- 设置group by 的 global sql_mode为严格分组模式
set global sql_mode="ONLY_FULL_GROUP_BY";
设置后 select 的字段只能取分组字段
select 分组字段 from table group by 分组字段
- order by排序
order by默认为升序(asc)排序
降序排序(desc)
order by 字段1,字段2
先按照字段1排序,字段1相同按照字段2排序
- limit 限制查询条数和分页
【查询 n 条 limit n】
用法示例:查询工资最高的员工信息
select * from employ order by salary desc limit 1
【分页 limit n,m】
n--页码 m--每页条数
符合分页的sql 格式为:
select * from table limit (n-1)*m,m
如每页十条数据
第一页 select * from table limit 0,10
第二页 select * from table limit 10,10
...
...
...