0

据我所知,Godatabase/sql接口库只期望返回两种类型的结果——一行或一组行。但是,至少还有一种结果类型 - 单列。

DB.column('SELECT COUNT(*) FROM `user` WHERE `banned` IS NOT NULL')

有什么办法可以解决这个问题 - 还是我只需要获取一行然后COUNT(*)从中访问?

4

2 回答 2

2

作为记录,SQL Server 存储过程(同时)返回以下所有内容:

  • 整数返回码
  • 零个或多个包含文本和两个整数代码的消息(通常是警告或错误)
  • 零个或多个命名的类型化标量输出参数
  • 零个或多个“行集”,每个行集都是零个或多个行的有序列表。

在行集中,所有行都具有相同数量(一个或多个)的命名、类型化列。行集中的列名不必是不同的。

SQL Server 不识别任何特殊情况,例如具有单行或单列的单个行集;或单个输出参数。

其他数据库系统略有不同。

于 2012-09-21T17:37:58.967 回答
2

是的,您获取一列行,但这有那么难吗?

var count int
row := db.QueryRow("SELECT COUNT(*) FROM `user` WHERE `banned` IS NOT NULL")
err := row.Scan(&count)

请注意,如果您发现它过于冗长(您可以删除 row 变量),这可能会被压缩。

我认为其他语言(例如 JDBC)中的其他类似系统也不提供本机这种快捷方式。

我发现处理一个我可以记住和浏览的 API 比处理一个包含我可能愿意用来删除代码中的一行的所有实用程序的 API 更容易。

于 2012-09-21T16:26:04.077 回答