日期:2014-05-18  浏览次数:20529 次

SQL分页语句有问题大家帮忙解决一下
[dbo].[View_Department]是一个视图,是对几个表的联合查询的结果,DomainID是这个表里的一个(机构)字段,如果直接查询这个表里的数据分页是没有问题的。就是下面的语句
SELECT TOP 10 * FROM [dbo].[View_Department]
  WHERE DomainID NOT IN 
  (SELECT TOP 10 DomainID FROM [dbo].[View_Department])

但是我要是把机构字段加进where条件里去就不对,第一页可以查询出来,但就是查询不出来以后的页数,什么问题大家给我看看,指点一下,数据库里有16条记录,语句如下:看看哪里错了

//这里可以查询出第一页的前10条数据
SELECT TOP 10 * FROM [dbo].[View_Department]  
  WHERE DomainID NOT IN 
  (SELECT TOP 0 DomainID FROM [dbo].[View_Department] 
  ORDER BY [GroupID]) and DomainID = 2 

//这句就查询不出来第2页了,为什么啊,
SELECT TOP 10 * FROM [dbo].[View_Department]  
  WHERE DomainID NOT IN 
  (SELECT TOP 10 DomainID FROM [dbo].[View_Department] 
  ORDER BY [GroupID]) and DomainID = 2 
求高人指点,怎么该

------解决方案--------------------
SQL code

SELECT TOP 10 * FROM [dbo].[View_Department]   
  WHERE DomainID NOT IN  
  (SELECT TOP 10 DomainID FROM [dbo].[View_Department]  
  ORDER BY [GroupID]) and DomainID = 2 

我给你解释一下你的语句:你要查询的是DomainID 不在ORDER BY [GroupID]前十条的数据中的
DomainID ,而且DomainID <>2那这么一说假如前十中有DomainID =2,那么你不就是没结果了吗?
我不明白你这个分也是什么意思,为什么要加DomainID <>2