我有一个表,初始的查询结果有几千条数据,现在想取其中的20条。但是要求是这20条中某个字段尽量不重复(比方说班级成员表):初始查询结果按照班级来排序是这样的
id name class
1 a class01
2 b class01
3 aa class01
4 bb class02
5 cc class02
6 dd class02
7 ee class03
....假设每个班级都有几百条数据,有n个班(这个班级数目是不固定的,没查询之前我也不会晓得是几),现在要抽出其中20条,要求尽量把20条数据分散从各个班抽,例如有20个或以上班的话,每个班一条,有小于20个班的话,每个班抽一条之后再按顺序从各个班来抽,有点类似与哈希表的样子。请问这个结果应该如何用sql语句实现?结贴率100%,希望大家积极帮忙。
id name class
1 a class01
2 b class01
3 aa class01
4 bb class02
5 cc class02
6 dd class02
7 ee class03
....假设每个班级都有几百条数据,有n个班(这个班级数目是不固定的,没查询之前我也不会晓得是几),现在要抽出其中20条,要求尽量把20条数据分散从各个班抽,例如有20个或以上班的话,每个班一条,有小于20个班的话,每个班抽一条之后再按顺序从各个班来抽,有点类似与哈希表的样子。请问这个结果应该如何用sql语句实现?结贴率100%,希望大家积极帮忙。
解决方案 »
- 请教大家个mysql 时间差比较问题,急,在线等
- mysql的mysql_real_escape_string在存储过程里有相同功能的函数吗?
- 通过php网页向mysql中保存一个“晅”字每次都是乱码,请达人解决
- 如何剔除数据库里某个字段中含有的非汉字信息
- SQL:两表查询和删除,这么写有问题吗?
- 急!!!请问在程序里怎样调用mysql的password()函数?送100分。
- mysql 通过api读取类型为text的字段值
- sql多表查询问题
- MYSQL在命令提示框里中文不能正常显示,换台电脑就可以,怎解
- PHP连接MYSQL出现每个套接字地址(协议/网络地址/端口)只允许使用一次
- 再问mysql表中信息统计
- 关于主外键约束和测试数据问题
1 a class01
2 b class02
3 aa class03
4 bb class04
5 cc class01
6 dd class02
7 ee class03就是按照class的这种顺序来排序,请问有可以实现这个效果的sql语句吗?
select * from (
select a.id,a.name,a.class,count(*) as gs from tt a left join tt b
on a.class=b.class and a.id<=b.id group by a.id,a.name,a.class) a1
order by class,gs
假设ID唯一
select * from (
select a.id,a.name,a.class,count(*) as gs from tt a left join tt b
on a.class=b.class and a.id<=b.id group by a.id,a.name,a.class) a1
order by gs,class