我有一个看起来像这样的查询:
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,名称,描述)之外,我还要计算超出限制 的查询的总行数。问题是由于GROUP BY,如果我要做一个count(*),我只会得到一堆带有1的行。
所以我的问题是:如何计算此查询返回的行数?而我该如何忽略上限?
还可以在单个查询中同时返回行数和列数据吗?还是我需要使用两个查询?
答案 0 :(得分:1)
您可以使用子查询:
SELECT COUNT(*)
FROM (
SELECT t1.id
FROM t1
LEFT JOIN t2 ON (t2.id = t1.id)
WHERE condition
GROUP BY t1.id) sub
编辑:
还可以在单个查询中同时返回行数和列数据吗?还是我需要使用两个查询?
是的,使用窗口COUNT
:
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