假设我正在运行以下 sql SELECT 查询:
SELECT Name, Age FROM Friends;
Bilbo|111
Aragorn|69
我希望能够在同一个查询中获得结果总数。
但是,如果我执行以下操作:
SELECT Count(*),Name, Age FROM Friends;
2|Aragorn|69
只显示最终结果。有没有办法让我获得所有结果并仍然通过单个 SQLite 查询获得计数?
如果您的 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;
通常,可以查询返回的结果集对象的长度;所以你不要把一个聚合函数像COUNT
SQL 查询本身一样,而只是计算返回了多少行。
如果我理解您的问题,请使用UNION
:
SELECT Name, Age FROM Friends UNION SELECT 'Count', COUNT() FROM Friends;