日期:2014-05-17  浏览次数:20801 次

查不到记录
select top 100 * from 土地表 
where (受理编号 not in (select top 151000 受理编号 from 土地表 order by 受理编号)) order by 受理编号

明明151000-160000都是到值的,为什么返回是0呢,不懂。
数据库

------解决方案--------------------
所以问你是否连续,如果不连续,你这not in就有可能查不出来
------解决方案--------------------
引用:
Quote: 引用:

你这个是分页把,如果是2005及以后的版本,用这个试试:

select *
from
(
select *,
       row_number() over(order by 受理编号) as rownum 
from 土地表 
where 受理编号 between 151000 and 160000
)t
where rownum <= 100


用的是SQL 2005


哦 ,那就用这个代码试试:
select *
from
(
select *,
       row_number() over(order by 受理编号) as rownum 
from 土地表 
where 受理编号 between 151000 and 160000
)t
where rownum <= 100

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

select top 100 * from 土地表 
where (受理编号 not in (select top 151000 受理编号 from 土地表 order by 受理编号)) order by 受理编号

明明151000-160000都是到值的,为什么返回是0呢,不懂。


这个有可能是因为,你的编号不连续,虽然151000-160000都有,但是总的编号也不超过151000,所以导致返回0。
--你看这个语句返回的值是多少,我觉得肯定小于151000
select  count(受理编号) from 土地表 
where 受理编号<= 151000 


代码返回是消息 245,级别 16,状态 1,第 2 行
在将 varchar 值 'C20040193961' 转换成数据类型 int 时失败。


改成这样呢:
select *
from
(
select *,
       row_number() over(order by 受理编号) as rownum 
from 土地表 
where 受理编号 between '151000' and '160000'
)t
where rownum <= 100

------解决方案--------------------
一个列的数据应该固定,不然整死你的。先处理一下多个数据源再考虑查找吧