Sql Postgres统计条件下的总行数,但忽略限制和分组依据
我得到了一个如下的查询:Sql Postgres统计条件下的总行数,但忽略限制和分组依据,sql,postgresql,Sql,Postgresql,我得到了一个如下的查询: SELECT t1.id, t1.name, t1.description FROM t1 LEFT JOIN t2 ON (t2.id = t1.id) WHERE condition GROUP BY t1.id LIMIT 100 除了返回指定的列(id、name、description)之外,我还想计算满足此查询且超过限制的行总数。问题是,由于GROUP BY,如果我要进行计数(*),我只会得到一堆带有1的行 所以我的问题是:如何计算这个查询返回的行数?我怎么
SELECT t1.id, t1.name, t1.description
FROM t1
LEFT JOIN t2 ON (t2.id = t1.id)
WHERE condition
GROUP BY t1.id
LIMIT 100
除了返回指定的列(id、name、description)之外,我还想计算满足此查询且超过限制的行总数。问题是,由于GROUP BY,如果我要进行计数(*),我只会得到一堆带有1的行
所以我的问题是:如何计算这个查询返回的行数?我怎么能无视这个限制呢
还可以在单个查询中同时返回行计数和列数据吗?或者我需要使用两个查询吗?您可以使用子查询:
SELECT COUNT(*)
FROM (
SELECT t1.id
FROM t1
LEFT JOIN t2 ON (t2.id = t1.id)
WHERE condition
GROUP BY t1.id) sub
编辑: 还可以在单个查询中同时返回行计数和列数据吗?或者我需要使用两个查询 是,使用带窗口的
计数
:
SELECT t1.id, COUNT(*) OVER() AS num_of_r0ws
FROM t1
LEFT JOIN t2 ON (t2.id = t1.id)
WHERE condition
GROUP BY t1.id
谢谢你的快速回答。但是您的第一个解决方案不是只计算100行吗?我希望统计存在的所有行,忽略限制。例如,如果我有1000行,但内部查询包含限制100,我仍然希望计数返回1000@Andrew你可以删除这个限制,我不认为使用它有什么意义限制是为了分页,但是我看到你的第二个建议实际上实现了我想要的。感谢您的快速响应!