Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Postgres统计条件下的总行数,但忽略限制和分组依据_Sql_Postgresql - Fatal编程技术网

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你可以删除这个限制,我不认为使用它有什么意义限制是为了分页,但是我看到你的第二个建议实际上实现了我想要的。感谢您的快速响应!