常规结果和同一查询中的Count(*)

时间:2013-08-30 12:12:29

标签: sql sqlite

假设我正在运行以下sql SELECT查询:

SELECT Name, Age FROM Friends;

Bilbo|111
Aragorn|69

我希望能够在同一查询中获得的结果总数
但是,如果我执行以下操作:

SELECT Count(*),Name, Age FROM Friends;

2|Aragorn|69

仅显示最终结果。有没有办法获得所有结果,仍然可以使用单个SQLite查询获取Count?

3 个答案:

答案 0 :(得分:2)

如果您的DBMS支持窗口聚合函数,那么很容易:

SELECT Count(*) OVER (),Name, Age FROM Friends;

否则你必须(交叉)加入:

SELECT cnt,Name, Age FROM Friends, (SELECT Count(*) as cnt FROM Friends);

或使用标量子查询:

SELECT (SELECT Count(*) FROM Friends) as cnt, Name, Age FROM Friends;

答案 1 :(得分:1)

通常,可以查询返回的结果集对象的长度;所以你不要把像COUNT这样的聚合函数放入SQL查询本身,而只是计算返回的行数。

答案 2 :(得分:1)

如果我理解您的问题,请使用UNION

SELECT Name, Age FROM Friends UNION SELECT 'Count', COUNT() FROM Friends;