MYSQL如何查询记录集的前3条记录

MYSQL如何查询记录集的前3条记录,第1张

SELECT * FROM 表 LIMIT 0, 3LIMIT 接受一个或两个数2113字参数。参数必须是5261一个整数常量。如果给定4102两个参数,第一1653个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)

select scrname,stucount from scrtab

select top 3 scrname,stucount from scrtab order by stucount

先按人数排序,然后在查出前三个

sql server查询前n条记录:

因为id可能不是连续的,所以不能用取得10

个人觉得难点在每隔2小时怎么取, 我的方式是取日期(0时0分0秒)然后加上小时数除以2作为标志每2小时的时间间隔(如果时间间隔不是整的小时, 且可以被24整除, 那么尚未想到好的方法)而取前3条记录则有row_number分组函数可以使用.

示例(SQL Server 2005或以上)如下:

declare @tb table (ss int, dt datetime) -- 定义表变量

insert into @tb        -- 插入测试用数据

select 1, '2013/1/20 12:01'

union

select 7, '2013/1/20 12:01'

union

select 3, '2013/1/20 13:21'

union

select 8, '2013/1/20 13:13'

union

select 5, '2013/1/20 12:049'

-- 测试SQL, dt为时间值, hourSpan为分在哪个时间间隔内

select ss, dt, hourSpan

from (

-- 用row_number来按时间间隔分组编号, 且按ss字段升序编号

select ss, row_number() over (partition by convert(nvarchar(10), dt, 120) + '_' + cast(datepart(hour, dt) / 2 as nvarchar(2)) order by ss) as rownumber, dt, convert(nvarchar(10), dt, 120) + '_' + cast(datepart(hour, dt) / 2 as nvarchar(2)) as hourSpan

from @tb

) s

where s.rownumber <= 3 -- 取分组编号值小于等于3的记录

将这个逻辑套用过去, 大概能满足你的需求. 不过, 如果是经常执行这样的查询, 建议建一个字段存此时间间隔值或使用视图, 不然每次查询都有计算, 速度不好.


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

原文地址: http://outofmemory.cn/sjk/9956587.html

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

发表评论

登录后才能评论

评论列表(0条)

保存