使用特定的 where 和 order by 子句查找行和总行的位置
Find the position of row and total rows with certain where and order by clauses
我有一个带有 where
和 order by
子句的 sql 查询:
SELECT "id" FROM "persons"
WHERE "id" in (10,20,30,40,50,60,70,80,90,100)
ORDER BY "id" DESC
现在我需要在上面的查询中获取 id=20 的行的位置和找到的行的总数。所以我
SELECT "id",pos FROM(
SELECT "id", rownum() as pos FROM(
SELECT "id" FROM "persons"
WHERE "id" in (10,20,30,40,50,60,70,80,90,100)
ORDER BY "id" DESC
)
)
WHERE "id"=20;
然而,我最后的查询只给出了行的位置。我现在如何获取行总数?条件:没有 window functions
因为我使用不支持它们的 RDBMS - h2 和 hsqldb.
看看这是否有帮助。
SELECT id,
(SELECT Count(*) from persons per1 where per1.id< per2.id) AS Rownumber
FROM persons per2
WHERE id in (10,20,30,40,50,60,70,80,90,100)
ORDER BY id DESC
用 HSQLDB 试试这个
WITH p("id", "pos") AS ( SELECT "id", rownum() AS "pos" FROM "persons"
WHERE "id" IN (10,20,30,40,50,60,70,80,90,100)
ORDER BY "id" DESC)
SELECT "id", "pos", (select count(*) from P) AS "count" FROM P
WHERE "id"=20;
我有一个带有 where
和 order by
子句的 sql 查询:
SELECT "id" FROM "persons"
WHERE "id" in (10,20,30,40,50,60,70,80,90,100)
ORDER BY "id" DESC
现在我需要在上面的查询中获取 id=20 的行的位置和找到的行的总数。所以我
SELECT "id",pos FROM(
SELECT "id", rownum() as pos FROM(
SELECT "id" FROM "persons"
WHERE "id" in (10,20,30,40,50,60,70,80,90,100)
ORDER BY "id" DESC
)
)
WHERE "id"=20;
然而,我最后的查询只给出了行的位置。我现在如何获取行总数?条件:没有 window functions
因为我使用不支持它们的 RDBMS - h2 和 hsqldb.
看看这是否有帮助。
SELECT id,
(SELECT Count(*) from persons per1 where per1.id< per2.id) AS Rownumber
FROM persons per2
WHERE id in (10,20,30,40,50,60,70,80,90,100)
ORDER BY id DESC
用 HSQLDB 试试这个
WITH p("id", "pos") AS ( SELECT "id", rownum() AS "pos" FROM "persons"
WHERE "id" IN (10,20,30,40,50,60,70,80,90,100)
ORDER BY "id" DESC)
SELECT "id", "pos", (select count(*) from P) AS "count" FROM P
WHERE "id"=20;