mysql 分组和获取随机记录
来源:互联网 发布:淘宝商品降价通知 编辑:程序博客网 时间:2024/06/05 12:42
现在有一张表 info 如图1-1所示,我想要每个class返回一条随机记录:
图1-1 数据源
我们知道 GROUP BY 可以实现分组,分组的效果如图1-2 所示
mysql> SELECT * FROM info GROUP BY class ;
图1-2 使用GROUP BY 分组后的数据
结合图1-1 可以看出来GROUP BY 返回的是每个class的第一个数据,这显然是不符合我想要获取随机记录的要求的。在mysql中提供了ORDER BY RAND() 方法,它的作用是将返回的结果集顺序打乱,如图1-3所示:
mysql> SELECT * FROM info ORDER BY RAND();
图1-3 ORDER BY RAND 后的结果
mysql 还提供了一个LIMIT 来限制返回的结果数,如图1-4所示 :
mysql> SELECT * FROM info LIMIT 2 ;
图1-4 使用LIMIT 控制返回数量
结合ORDER BY RAND 和 LIMIT 就可以实现随机返回指定条记录了,如图1-5 所示:
mysql> SELECT * FROM info ORDER BY RAND() LIMIT 1 ;
图1-5 返回指定条随机记录
如果要随机返回一条class =1 的记录,可以这样做 :
mysql> SELECT * FROM info WHERE class = 1 ORDER BY RAND( ) LIMIT 1 ;
图1-6 随机返回一条class =1 的记录
如果要每个class返回一条随机记录就需要结合上边说的几个方法了,具体如图1-7所示:
mysql> SELECT * FROM ( SELECT * FROM info ORDER BY RAND() ) AS temp GROUP BY class ;
图1-7 每个class返回一条随机记录
这里要注意的是要给中间的查询结果起一个别名temp(可以取其他的),不然会报错,如图1-8所示:
图1-8 不起别名报错
1 0
- mysql 分组和获取随机记录
- mysql随机获取记录
- mysql 随机获取记录
- mysql 随机获取100记录
- mysql分组后获取最大值的记录
- MySQL分组获取前条记录
- mysql 随机获取记录条数
- 分组后获取随机数据
- MySQL获取所有分组的前N条记录
- Asp获取随机记录
- 数据库获取随机记录
- 数据库获取随机记录
- oracle获取随机记录
- mysql 随机获取记录 order by rand 优化
- sql获取随机记录(MYSQL,ACCESS,ORACLE,SQL Server)
- sql获取随机记录(MYSQL,ACCESS,ORACLE,SQL+Server)
- 随机获取Mysql数据表的一条或多条记录
- 随机获取Mysql数据表的一条或多条记录
- STL: for_each
- 前端模板的原理与实现
- 拯救白领颈椎:治疗肩周
- Spring 支持 CORS 请求踩的坑
- 关于Servlet的过滤器
- mysql 分组和获取随机记录
- Spring 使用 Quartz 任务调度定时器
- 预处理-分节4(#error 预处理,#line 预处理)
- GoogleNet的Inception_v1、Inception_v2、Inception_v3、Inception_v4(整理)
- Struts中的拦截器未登录的session配置
- Win7环境下使用eclipse开发c/c++(续)
- Longest Common Prefix
- 预处理-分节5(#pragma 上)
- log4j 项目中的详细配置