1  /  2  页   12 跳转 查看:8847

一条SQL语句的凝问

一条SQL语句的凝问

select top 页大小 * from table1
where id>
      (select max (id) from
      (select top ((页码-1)*页大小) id from table1 order by id) as T
      )   
  order by id

我这样写却始终找不到数据表里的1-10的记录
我每次传进去的page(当前页)参数,出来都要大10
比如,原本是第一页,也就是1-10的记录,它偏偏显示11-20
原本是每二页的,也就是11-20 的,它偏偏显示21-30
请大家帮我看看吧
 

回复: 一条SQL语句的凝问

你的第1-10条记录会永远选不出来的,因为下面的语句的执行结果是NULL

select max (id) from
      (select top ((页码-1)*页大小) id from table1 order by id) as T

而NULL做任何运算都是NULL,即你的id>NULL运算也会返回NULL,所以最终不会有任何记录返回。

至于为什么每次选出来的都要大10,你需要确定一下你传进去的页码是不是始终大1。
虽有智慧,不如乘势;虽有鎡基,不如待时。
君子学以聚之,问以辨之,宽以居之,仁以行之。
独学而无友,则孤陋而寡闻。
 

回复: 一条SQL语句的凝问

谢谢您的回复,您说得很对,确实是这样的,
我现在改成这样就OK了
SELECT isnull(max(id),0
 

回复: 一条SQL语句的凝问

没看明白为什么下面的语句会是NULL:L
select max (id) from
      (select top ((页码-1)*页大小) id from table1 order by id) as T
SQL Server技术交流群:71791281(有些问题在线解决或许会更快)

本群将从即日起严厉打击:刷屏、打广告、粘贴各种垃圾信息的ID,一经发现,马上删除。

希望通过我们的努力,能为大家打造一个健康有序的交流平台。
 

回复: 一条SQL语句的凝问

我还有个问题 ,我现在想换成降序又出来了,
好像是同样的毛病,
我是想换成 order by id desc 这样
要怎 么改呢
 

回复: 一条SQL语句的凝问

select top 页大小 * from table1
where id<
      (select isnull(max (id),10) from
      (select top ((页码-1)*页大小) id from table1 order by id) as T
      )   
  order by id desc
虽有智慧,不如乘势;虽有鎡基,不如待时。
君子学以聚之,问以辨之,宽以居之,仁以行之。
独学而无友,则孤陋而寡闻。
 

回复: 一条SQL语句的凝问

还是不行
 

回复: 一条SQL语句的凝问

我希望出来的ID号是这样的
10
9
8
7
6
5
4
3
2
1
这样来排序的
 

回复: 一条SQL语句的凝问

我这里就是这样排序的。

你看你是不是哪里出了问题?
虽有智慧,不如乘势;虽有鎡基,不如待时。
君子学以聚之,问以辨之,宽以居之,仁以行之。
独学而无友,则孤陋而寡闻。
 

回复: 一条SQL语句的凝问

你看下,如果记录大于10条的会出现什么情况
 
1  /  2  页   12 跳转

版权所有 微软BI开拓者 

Powered by Discuz!NT 2.1.202    Copyright © 2001-2012 Comsenz Inc.
Processed in 0.0468768 second(s) , 4 queries.
返顶部