mysql概要(四)order by ,limit ,group by和聚合函数的特点,子查询
2024-10-15 23:21:56
1.order by 默认按升序排列(asc/desc),多字段排序 order by 字段 排序方式,字段2 排序方式,..;
在分组排序中,排序是对分组后的结果进行排序,而不是在组中进行排序。
select * from stu order by score desc,name asc;//优先score ,然后name排序
2.limit 在语句表示,截取记录的条数。一般和order by 配合使用(大数据下Limit使用)
limit[offset][N]
offset: 偏移量 N:条数; 如limit(2,2),即从第三记录开始取两条记录。当一个参数时:limit 2,即从第一条记录开始取2条
select * from ibmng limit ,
3.关于分组和聚合函数的一个问题,(补充)
使用聚合函数,分组时其他字段的值是从库中取组第一次出现时对应数据,聚合函数的得到值和其他字段的值并不是原来本该对应的一条记录。只是组合一起
如:以班级进行分组,获取成绩最好的学生,
select name ,max(score) from stu group by bianji;//错误,这样最大成绩对应的学生并不是原学生。
如果你想在学校学生表中获取班级成绩最好的学生信息,如果想使用简单分组是不行,上面已经说明,
方法一:先使用分组查询出班级和最大成绩的结果作为新表,再和原表进行联合查询出所对应的学生信息。(保证有多个相同成绩的存在情况)
方法二:如果是最好成绩只有一个话的特列,倒是可以先按班级和成绩排序结果集再进行分组(利用了分组获取第一次出现的规则)。类似获取商品中每类物品的最高价格的物品:
4子查询 where from exists
where 子查询:聚合函数可以直接用,(差点以为只能在group中使用了,但是一般不能和别的字段一起使用)
使用不同的子查询查出栏目下最新商品(只是id最大的那个为最新)
where
from
exists:查询出有商品的栏目:可以理解成外查询中每条记录,代入到内查询中,如果内查询有结果,就表示外查询的当前记录满足条件。
exists,有点类似in
最新文章
- Expression Blend4经验分享:制作一个简单的图片按钮样式
- lucene/solr 修改评分规则方法总结
- C# 的Brush 及相关颜色的操作 (并不是全转)
- 如何做高大上的网站布局 -------------------->;>;转至(卧牛SEO/武汉SEO http://blog.sina.com.cn/zhengkangseo )
- 五种常见的ASP.NET应用程序安全缺陷
- 基于RSA的加密/解密示例C#代码
- 【Android Developers Training】 49. 轻松录制视频
- 简易 (I/O)版本通讯录
- 【luogu P4005 清华集训2017】小Y和地铁
- HandlerInterceptor里@Autowired对象为空的解决方法
- 解决问题SyntaxError: Unexpected token import
- DesigningFormsinAccess2010
- oracle 修改进程
- vue路由6:导航钩子
- matlab xml文件交互
- spring mvc EL ModelAndView的 Model 值 在jsp中不显示
- Intent传递数据全解
- 穷竭搜索: POJ 2718 Smallest Difference
- delphi 工具
- [GO]接口的定义和实现