查询数据表中间N条记录的sql语句

needforskill 2010-05-13 03:44:32
大家别笑,我一计算机类专业应届毕业生,但是学得不怎么好,面试经常被BS
笔试曾经有一题:
写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。
现在知道在SQL Server 或者 access上可以这样写:

select top 40 ID
from admin where ID not in(select top 30 ID from admin) ;

但是最近在弄mysql,想到了这题,但是试了一下在mysql下这样写:

select ID from admin limit 40 where id not in(select ID from admin limit 30)

结果证明是在子查询中是不能使用limit的
然后在网查了一下,可以这样在子查询中使用limit:

select ID from admin where ID in (select t.ID from (select ID from admin limit 40)as t)

然后就试了一下这样写用于返回中间6-10条记录:

select * from admin where id not in(select t.id from(select * from admin limit 4) as t) limit 6;

不知道各位牛人有什么更好的办法!
...全文
259 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
needforskill 2010-05-13
  • 打赏
  • 举报
回复
可以详细点吗?刚接触mysql,语法不是很熟
justchenjie 2010-05-13
  • 打赏
  • 举报
回复
select * from mytable where id > offset and id < offset + limit and index_col = xxx
needforskill 2010-05-13
  • 打赏
  • 举报
回复
都试过了,都正确,看来我还有很长的路要走
crazylaa 2010-05-13
  • 打赏
  • 举报
回复
select * from tbl limit 20,10;
表示从第20条开始,取10条。所以你这里:
select * from tbl limit 30,10;
fanhai2010 2010-05-13
  • 打赏
  • 举报
回复
select ID from admin limit 10 offset 30;
保证准确,不信你试下。

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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