表sql Query中的第N个最大元素

时间:2010-05-30 06:28:09

标签: sql-server

任何人都可以解释这个查询的工作原理..这是从表中得到第N个最大的元素。它是第4个最大的

SELECT a.ID
  FROM tblitem a
 WHERE (4) = (select count(*)
                from tblItem  b
               where b.id < a.id)

提前致谢

2 个答案:

答案 0 :(得分:2)

或许有点重写查询会有所帮助:

SELECT a.ID,
    (select count(*) from tblItem b where b.id < a.id) as cnt
FROM tblitem a

示例:如果id列以1开头并以2递增,则结果如下所示:

id   cnt
1    0     No rows with a smaller id, subquery returns 0
3    1     One row with a smaller id, subquery returns 1
5    2     ...
7    3
9    4
11   5

在第五行cnt = 4上,该行由where子句选择。

答案 1 :(得分:1)

(select count(*) from tblItem  b where b.id < a.id)

是一个子查询,用于查找表中其值小于当前值(count(*))的项目数(a.id)。

4 = (select count(*) from tblItem  b where b.id < a.id)

我们选择的产品恰好比当前值少4项。这意味着a.id应为第五小

要选择第4个最大元素,请将<更改为>=