mysql 用一条sql语句取出各类数据的前两N条数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 用一条sql语句取出各类数据的前两N条数据相关的知识,希望对你有一定的参考价值。

mysql 用一条sql语句取出各类数据的前两N条数据
如表结构:
id,name,age,type,Score
数据据:
1,李,12,小学生,80
2,王,13,小学生,78
3,王,13,中学生,56
4,王,13,中学生,94
5,王,13,小学生,35
6,王,13,中学生,74
7,王,13,小学生,97
8,王,13,中学生,64
用一条sql语句得出下面的结
1,李,12,小学生,80
7,王,13,小学生,97
4,王,13,中学生,94
6,王,13,中学生,74

参考技术A 这个sql有点麻烦了,
简单点的就直接
select id,name,type,score from student where type='小学生' limit 2 union select id,name,type,score from student where type='中学生' limit 2 ;
或者你用存储过程来做循环:查询出所有type然后在循环里动态给 查询语句中的type复制,有几个type就concat几个union上去,
其他直接写sql查询的话有点难,写不出来
参考技术B select id,name,age,type,score from(
select id,name,age,type,score,rank() over(partition by school order by id asc) as num from table aa)
where aa.num<3
这个可以我试过了追问

你的表结构是什么样的?

参考技术C select top 4 * from 表名 where 条件追问

主要是要查询出小学生和中学生两个分类的前两条数据,而且是mysql,不是sql server。

参考技术D 这是按什么排序的追问

什么排序都可以,只要能取出各分类里的前N条数据就可以。

追答

直接写两条SQL

select * from student where type='小学生' limit 2
select * from student where type='中学生' limit 2

以上是关于mysql 用一条sql语句取出各类数据的前两N条数据的主要内容,如果未能解决你的问题,请参考以下文章

用一条SQL语句取出第 m 条到第 n 条记录的方法

SQL查询每月每天的前两条数据....

sql数据库怎么实现分组并取每组的前1条语句,按日期排序?

mysql怎么查询一条记录的前一条记录和后一条记录

mysql只能取出一条记录为啥不显示

SQL:数据与运算的融合体(附用一条语句实现时间序列的增量运算)