为什么Go数据库库中只有两种查询类型?

为什么Go数据库库中只有两种查询类型?,go,Go,据我所知,Godatabase/sqlinterface library只希望返回两种类型的结果—或者一种。但是,至少还有一种类型的结果-一个列 DB.column('SELECT COUNT(*) FROM `user` WHERE `banned` IS NOT NULL') 有什么方法可以处理这个问题吗?或者我只需要获取一行,然后从中访问计数(*)。是的,您获取的是一列行,但这很难吗 var count int row := db.QueryRow("SELECT COUNT(*) FR

据我所知,Go
database/sql
interface library只希望返回两种类型的结果—或者一种。但是,至少还有一种类型的结果-一个列

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

有什么方法可以处理这个问题吗?或者我只需要获取一行,然后从中访问
计数(*)

是的,您获取的是一列行,但这很难吗

var count int
row := db.QueryRow("SELECT COUNT(*) FROM `user` WHERE `banned` IS NOT NULL")
err := row.Scan(&count)
请注意,如果您发现它太冗长,可能会对其进行压缩(您可以删除row变量)

我认为其他语言中的其他类似系统(例如JDBC)也不提供这种捷径


我发现更容易处理一个我可以记忆和浏览的API,而不是一个拥有我可能愿意用来删除代码中一行的所有实用程序的API

是的,您获取的是一列行,但这很难吗

var count int
row := db.QueryRow("SELECT COUNT(*) FROM `user` WHERE `banned` IS NOT NULL")
err := row.Scan(&count)
请注意,如果您发现它太冗长,可能会对其进行压缩(您可以删除row变量)

我认为其他语言中的其他类似系统(例如JDBC)也不提供这种捷径


我发现更容易处理一个我可以记忆和浏览的API,而不是一个拥有我可能愿意用来删除代码中一行的所有实用程序的API

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

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

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


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

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

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

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


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

是的,这不是什么大问题。然而,简洁的代码是Go的一大优势。因此,由于它只是一个附加方法,我只是想知道为什么它会丢失,因为从逻辑上看,这种方法应该存在,而不是必须绕过它。单列SQL结果相当常见。原因可能是希望有一个简单且最小的API。请注意,让函数从查询返回int和错误是很容易的。但数据库中只有三种结果类型可以返回:值、对象或对象数组。因为它使事情更简单而不使用一个值,就像不使用整数一样,因为我们可以对它们使用浮点数。@Xeoncross SQL数据库通常不会在一列和一行(即单个值)的结果集与一个10列和一行的结果集之间进行内部区分,或者1列10行等等。但是有一种常见的结果类型您忘记了,那就是返回多个结果集,这是SQL数据库通常提供的功能。是的,这不是一个大问题。然而,简洁的代码是Go的一大优势。因此,由于它只是一个附加方法,我只是想知道为什么它会丢失,因为从逻辑上看,这种方法应该存在,而不是必须绕过它。单列SQL结果相当常见。原因可能是希望有一个简单且最小的API。请注意,让函数从查询返回int和错误是很容易的。但数据库中只有三种结果类型可以返回:值、对象或对象数组。因为它使事情更简单而不使用一个值,就像不使用整数一样,因为我们可以对它们使用浮点数。@Xeoncross SQL数据库通常不会在一列和一行(即单个值)的结果集与一个10列和一行的结果集之间进行内部区分,还有一种常见的结果类型您忘记了,它返回多个结果集,这是SQL数据库通常提供的功能。