mysql 怎么查询第几条数据

mysql 怎么查询第几条数据,第1张

查询 第几条

select * from tablename limit 2,2

select * from table limit m,n

其中m是指记录开始的index,从0开始,表示第一条记录

n是指从第m+1条开始,取n条。

select * from tablename limit 2,4

即取出第3条至第6条,4条记录

本文实例讲述了mysql使用GROUP

BY分组实现取前N条记录的方法。分享给大家供大家参考,具体如下:

MySQL中GROUP

BY分组取前N条记录实现

mysql分组,取记录

GROUP

BY之后如何取每组的前两位下面我来讲述mysql中GROUP

BY分组取前N条记录实现方法。

这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~):

结果:

方法一:

复制代码

代码如下:SELECT

a.id,a.SName,a.ClsNo,a.Score

FROM

aa

a

LEFT

JOIN

aa

b

ON

a.ClsNo=b.ClsNo

AND

a.Score<b.Score

group

by

a.id,a.SName,a.ClsNo,a.Score

having

count(b.id)<2

ORDER

BY

a.ClsNo,a.Score

desc

拆开分析:

<!--[if

!supportLists]-->1、

<!--[endif]-->LEFT

JOIN

aa

b

ON

a.ClsNo=b.ClsNo

AND

a.Score<b.Score

同一个班级(每个班级四个人),分数比当前学生高的记录,那就意味这成绩垫底的学生,将会产生三条记录

<!--[if

!supportLists]-->2、

<!--[endif]-->group

by

a.id,a.SName,a.ClsNo,a.Score

having

count(b.id)<2

a.id,a.SName,a.ClsNo,a.Score可以代表一个学生(以学生分组),如果count(b.id)<2(成绩超过你的人不能多于2个),那就只剩第一第二了。

方法二:

复制代码

代码如下:SELECT

*

FROM

aa

a

WHERE

2>(SELECT

COUNT(*)

FROM

aa

WHERE

ClsNo=a.ClsNo

and

Score>a.Score)

ORDER

BY

a.ClsNo,a.Score

DESC

这个我觉得是比较有意思的,取每一条记录,判断同一个班级,大于当前成绩的同学是不是小于2个人。

方法三:

复制代码

代码如下:SELECT

*

FROM

aa

WHERE

id

IN

(SELECT

id

FROM

aa

WHERE

ClsNo=a.ClsNo

ORDER

BY

Score

DESC

LIMIT

2)

ORDER

BY

a.ClsNo,a.Score

DESC

这种方式进过测试不通过,ERROR

1235

(42000):

This

version

of

MySQL

doesn't

yet

support

'LIMIT

&

IN/ALL/ANY/SOME

subquery'

,不能在这几个子查询中使用limit。

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL日志 *** 作技巧大全》、《MySQL事务 *** 作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》

希望本文所述对大家MySQL数据库计有所帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6737028.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-27
下一篇2023-03-27

发表评论

登录后才能评论

评论列表(0条)

    保存