任何人都可以解释这个查询的工作原理..这是从表中得到第N个最大的元素。它是第4个最大的
SELECT a.ID
FROM tblitem a
WHERE (4) = (select count(*)
from tblItem b
where b.id < a.id)
提前致谢
答案 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个最大元素,请将<
更改为>=
。