按类型分页查询

jollroy 2017-06-20 09:03:03
我现在有张表结构大致如下
id,type,desc
id是自增的
type在1-6之间
desc是详细信息
我现在想对这张表 type 1到6之间 每个值取10秒记录
除了用union拼接6次以外还有什么办法能做到
...全文
269 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2017-06-22
  • 打赏
  • 举报
回复
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
二月十六 2017-06-22
  • 打赏
  • 举报
回复
引用 5 楼 jollroy 的回复:
能给个mysql版本吗
差不太多,试试这样行吗?
SELECT  DISTINCT a.*
FROM    表 a
WHERE   a.id IN ( SELECT 
                            id
                  FROM      表
                  WHERE     type = a.type
                  ORDER BY  id DESC limit 2)
ORDER BY id DESC
jollroy 2017-06-22
  • 打赏
  • 举报
回复
引用 4 楼 sinat_28984567 的回复:
写了个例子,4个type,每个type取两条
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([id] int,[type] int,[desc] nvarchar(24))
Insert #T
select 1,1,N'测试1' union all
select 2,1,N'测试2' union all
select 3,1,N'测试3' union all
select 4,2,N'测试4' union all
select 5,2,N'测试5' union all
select 6,3,N'测试6' union all
select 7,3,N'测试7' union all
select 8,3,N'测试8' union all
select 9,4,N'测试9' union all
select 10,4,N'测试10'
Go
--测试数据结束
SELECT  DISTINCT a.*
FROM    #T a
WHERE   a.id IN ( SELECT TOP 2
                            id
                  FROM      #T
                  WHERE     type = a.type
                  ORDER BY  id DESC )
ORDER BY id DESC
能给个mysql版本吗
二月十六 2017-06-21
  • 打赏
  • 举报
回复
写了个例子,4个type,每个type取两条
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([id] int,[type] int,[desc] nvarchar(24))
Insert #T
select 1,1,N'测试1' union all
select 2,1,N'测试2' union all
select 3,1,N'测试3' union all
select 4,2,N'测试4' union all
select 5,2,N'测试5' union all
select 6,3,N'测试6' union all
select 7,3,N'测试7' union all
select 8,3,N'测试8' union all
select 9,4,N'测试9' union all
select 10,4,N'测试10'
Go
--测试数据结束
SELECT DISTINCT a.*
FROM #T a
WHERE a.id IN ( SELECT TOP 2
id
FROM #T
WHERE type = a.type
ORDER BY id DESC )
ORDER BY id DESC


jollroy 2017-06-20
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
SELECT  a.*
FROM    表 a
WHERE   a.id IN ( SELECT TOP 10
                            id
                  FROM      表
                  WHERE     type = a.type
                  ORDER BY  id DESC )
ORDER BY id DESC
你这样并没有对每个type的值取10条啊
jollroy 2017-06-20
  • 打赏
  • 举报
回复
有人能知道吗
二月十六 2017-06-20
  • 打赏
  • 举报
回复
SELECT  a.*
FROM    表 a
WHERE   a.id IN ( SELECT TOP 10
                            id
                  FROM      表
                  WHERE     type = a.type
                  ORDER BY  id DESC )
ORDER BY id DESC

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧