SELECT TOP 1 ID+1 
FROM Account AS aaa 
WHERE aaa.ID=(select count(*)+1 from Account where aaa.ID>ID)
ORDER BY aaa.ID DESCTable: Account
--------------------------------
|AccountID  | 其他字段略
|-------------------------------
| 1    |
| 2    |
| 3    |
| 4    |
| 9    |
|10    |
|11    |
|20    |
--------------------------------

解决方案 »

  1.   

    lz,你这个ID是连续的吗?怎么top 1 了还要order by 呢?多此一举嘛,感觉是想得到最大ID,但怎么又用的count(*)呢,想不通这个,关注下……
      

  2.   

    查询第一条记录TOP 1,并把ID号加1,把Account表名一个别名aaa,条件aaa.ID=(select count(*)+1 from Account where aaa.ID>ID,并按照id号降序排序。
      

  3.   

    求的是id中(最小到最大的id值之间)没有使用到的最小的id号
      

  4.   

    不是连续的就更糊涂了,不知道想查什么,换成max的话还能理解。
      

  5.   

    还有order by更难理解,既然按降序排列,结果确实升序。
      

  6.   

    查询所有大于本身的id的记录数+1,它的值又等于本身的id的记录!!