原文:在论坛中出现的比较难的sql问题:5(row_number函数 分页、随机返回数据)

所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。


1、在inner join后,如何分页。

http://bbs.csdn.net/topics/390617884

sqlserver 对一张表进行分页查询,但是还要通过第二张表获取信息:


  1. --比如有一张表
  2. create table Student
  3. (
  4. sid int primary key identity(1,1) ,
  5. sname varchar(15) not null
  6. )
  7. --第二张表
  8. create table Comment
  9. (
  10. id int primary key identity(1,1) ,
  11. sid int not null
  12. )

我需要对第二张表comment 进行分页查询,但是还要通过第一张表查询姓名

要改如何写sql代码。

我用内连接后接下来该如何做。

我的解法:


  1. declare @page_size int;
  2. declare @page_num int;
  3. --比如:每页10条记录
  4. set @page_size = 10;
  5. --比如:先取第1页
  6. set @page_num = 1;
  7. select id,sid,sname
  8. from
  9. (
  10. select c.id,
  11. c.sid,
  12. s.sname,
  13. --这里按照@@servername来排序,
  14. --你可以根据需要按照id,sid,sname等字段来排序
  15. (row_number() over(order by @@servername) - 1) / @page_size as rownum
  16. from commet c
  17. inner join student s
  18. on c.sid = s.sid
  19. )t
  20. where rownum = @page_num - 1

由于没有实验数据,下面通过sys.objects来实现:


  1. declare @page_size int;
  2. declare @page_num int;
  3. --比如:每页10条记录
  4. set @page_size = 10;
  5. --比如:先取第1页
  6. set @page_num = 1;
  7. select *
  8. from
  9. (
  10. select *,
  11. row_number() over(order by @@servername) as rownum,
  12. --这里按照@@servername来排序,
  13. --你可以根据需要按照id,sid,sname等字段来排序
  14. (row_number() over(order by @@servername) - 1) / @page_size as pagenum
  15. from sys.objects
  16. )t
  17. where pagenum = @page_num - 1


  1. --适用于sql server 2012
  2. --也就是 从哪个offset开始,取后面的多少行
  3. select *
  4. from sys.objects
  5. order by @@servername
  6. offset (@page_num - 1)*@page_size rows
  7. fetch next @page_size rows only

2、group by trueName后,返回不尽相同的userName,也就是userName字段的值需要一定的随机性,然后求score的总和。

在论坛中出现的比较难的sql问题:5(row_number函数 分页、随机返回数据)的更多相关文章

  1. 在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据)

    原文:在论坛中出现的比较难的sql问题:44(触发器专题 明细表插入数据时调用主表对应的数据) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决 ...

  2. 在论坛中出现的比较难的sql问题:9(触发器专题 插入数据自动更新表数据)

    原文:在论坛中出现的比较难的sql问题:9(触发器专题 插入数据自动更新表数据) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所 ...

  3. 在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题)

    原文:在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有 ...

  4. 在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时、分钟计算问题)

    原文:在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时.分钟计算问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. ...

  5. 在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列)

    原文:在论坛中出现的比较难的sql问题:42(动态行转列 考勤时间动态列) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  6. 在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字)

    原文:在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  7. 在论坛中出现的比较难的sql问题:40(子查询 销售和历史库存)

    原文:在论坛中出现的比较难的sql问题:40(子查询 销售和历史库存) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有 ...

  8. 在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题)

    原文:在论坛中出现的比较难的sql问题:39(动态行转列 动态日期列问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉 ...

  9. 在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题)

    原文:在论坛中出现的比较难的sql问题:38(字符拆分 字符串检索问题) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得 ...

  10. 在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名)

    原文:在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

随机推荐

  1. HearthBuddy 调试肯瑞托法师寒冰屏障的配合

    35疯狂的科学家 63肯瑞托法师 13过期货物专卖商 64对面的英雄术士 比较好的出牌策略是,肯瑞托法师+寒冰屏障 ailoop1 startEnemyTurnSimThread1start prin ...

  2. Python 自学笔记(八)

    import math def A(a,b): print("第一个参数的值为"+str(a)) print("第一个参数的值为"+str(b)) a = 1 ...

  3. Nginx在线服务状态下平滑升级或新增模块

    nginx在使用过程中,有时需要在不影响当前业务的情况下,进行升级或新增模块.nginx的升级有两种方法:1.半自动化升级:2.手动升级 不过都需要先查看安装的nginx版本和配置信息,然后前往官网下 ...

  4. windows 10 enterprize LTSC

    to avtivate the windows 10 enterprize LTSC version, do the following command every 6 months. slmgr - ...

  5. linux下的进程通信之管道与FIFO

    概念:管道是由内核管理的一个缓冲区,相当于我们放入内存中的一个纸条.管道的一端连接一个进程的输出.这个进程会向管道中放入信息.管道的另一端连接一个进程的输入,这个进程取出被放入管道的信息. 优点:不需 ...

  6. 【C/C++开发】C++ Thread对象封装

    Pthread库是posix linux的线程库,调用接口如下,我们模仿JDK,对Thread进行封装,具体的业务逻辑只需要如同Thread一样实现run方法即可. 线程操纵函数(简介起见,省略参数) ...

  7. 【数据库开发】Redis数据库服务器启动配置

    Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sor ...

  8. VS2010调试warning MSB8012:路径不匹配问题

    VS2010调试warning MSB8012:路径不匹配问题 调试信息如下: warning MSB8012: TargetPath(D:\J2KCodecSDK\Samples\C++\a_Eas ...

  9. IBM.WMQ订阅主题,连续获取消息解决办法

    去队列里面一直获取消息,一开始想到了两种解决方案: 第一:订阅一次获取一次消息,正常的话每次都能获取到,但是要及时去清理订阅并且时间粒度不好控制 第二:订阅一次,再获取消息这里加死循环,超时MQ已经做 ...

  10. mysql学习之join从句

    一.join从句共有5种类型 内连接(inner join) 全外连接(full outer join) 左外连接(left outer join) 右外连接(right outer join) 交叉 ...