从Go中获取SQL查询的计数和结果

时间:2015-07-30 15:29:54

标签: sql go

我使用database/sqllib/pq(postgres)软件包运行一个相当简单的查询,我想将一些字段的结果投入切片,但我需要知道切片有多大。

我能找到的唯一解决方案是执行另一个只有SELECT COUNT(*) FROM tableName;的查询。

有没有办法在一个查询中获取查询结果和返回行数?

3 个答案:

答案 0 :(得分:3)

从概念上讲,问题是数据库游标可能无法枚举到最后,因此数据库实际上并不知道在您实际读取所有记录之前将获得多少记录。计算(通常情况下)的唯一方法是遍历结果集中的所有记录。

但实际上,您可以通过使用

等子查询来强制执行此操作
select *, (select count(*) from table) from table

并忽略第一列以外的记录。但它非常粗鲁,我不建议这样做。

答案 1 :(得分:0)

不确定这是否是您所要求的,但您可以调用@@ Rowcount函数来返回先前已执行的select语句的计数。

SELECT mytable.mycol FROM mytable WHERE mytable.foo = 'bar'

SELECT @@Rowcount

如果您希望结果集中包含行数,可以使用OVER子句(MSDN

SELECT mytable.mycol, count(*) OVER(PARTITION BY mytable.foo) AS 'Count' FROM mytable WHERE mytable.foo = 'bar'

您也可以将两个SQL语句与a分开; 。这将返回执行的两个语句的结果集。

答案 2 :(得分:-1)

您将使用count(*)

SELECT count(distinct last)
FROM (XYZTable)
WHERE date(FROM_UNIXTIME(time)) >= '2013-10-28' AND
id = 90 ;