SELECT TOP 40 id FROM mytable 
WHERE (id NOT IN(SELECT TOP 0 id FROM mytable order by id )) 
order by id
4693
4694
4696
4697
4698
4702
4703
4704
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
注:取0-40数据段,只有28个,所以查出了所有,这是正常的SELECT TOP 20 id FROM mytable 
WHERE (id NOT IN(SELECT TOP 0 id FROM mytable order by id )) 
order by id 
4693
4694
4696
4697
4698
4702
4703
4704
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
注:取0-20数据段,这是正常的SELECT TOP 20 id FROM mytable 
WHERE (id NOT IN(SELECT TOP 20 id FROM mytable order by id )) 
order by id 
4718
4719
4720
4721
4722
4723
4724
4725
注:取20-20数据段,总共28个,所以查出了剩余的8个,这是正常的SELECT TOP 40 id FROM mytable 
WHERE (id NOT IN(SELECT TOP 0 id FROM mytable order by id )) and address=0 
order by id 
4702
4703
4704
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4724
4725
注:取0-40数据段,并且要求address=0,总共22个,全部28个数据,剩余6个address=1,这是正常的SELECT TOP 20 id FROM mytable 
WHERE (id NOT IN(SELECT TOP 0 id FROM mytable order by id )) and address=0 
order by id 
4702
4703
4704
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
注:取0-20数据段,并且要求address=0,这是正常的SELECT TOP 20 id FROM mytable 
WHERE (id NOT IN(SELECT TOP 20 id FROM mytable order by id )) and address=0 
order by id 
4718
4719
4720
4721
4722
4724
4725
注:取20-20数据段,并且要求address=0这里出现了问题,为什么查找出来的数据段不是剩余的4724和4725,而是有7个数据???怎么改查询

解决方案 »

  1.   

    SELECT TOP 20 id FROM mytable
    WHERE (id NOT IN(SELECT TOP 20 id FROM mytable order by id ))
    order by id
    4718
    4719
    4720
    4721
    4722
    4723
    4724
    4725
    注:取20-20数据段,总共28个,所以查出了剩余的8个,这是正常的
      

  2.   

    ------------------------------try--------------------
    select * from  (
    SELECT TOP 20 id FROM mytable
    WHERE (id NOT IN(SELECT TOP 20 id FROM mytable order by id ))  ) t where address=0
      

  3.   

    SELECT TOP 20 id FROM mytable 
    WHERE (id NOT IN(SELECT TOP 20 id FROM mytable where address=0 order by id )) and address=0
      

  4.   


    SELECT TOP 20 id FROM mytable
    WHERE (id NOT IN(SELECT TOP 20 id FROM mytable where address=0 order by id )) and address=0
    正解
      

  5.   

    SELECT TOP 20 id FROM mytable
    WHERE (id NOT IN(SELECT TOP 20 id FROM mytable order by id )) and address=0
    order by id 
    这个查询中SELECT TOP 20 id FROM mytable
    WHERE (id NOT IN(SELECT TOP 20 id FROM mytable order by id ))这个查询中这里查询出了后面8条数据,然后再后面的8条数据中筛选出
     address=0
      

  6.   

    tomyuansir() 和原来的一样wgzaaa() 是可以的.我发现只要外层的select发生改变,内层的select也要做同样的变化.
      

  7.   

    多谢 andy84()  的热心讲解