据我所知,Go database/sql
接口库只需要两种类型的结果 - a row或array of rows。但是,至少还有一种类型的结果 - 单列。
DB.column('SELECT COUNT(*) FROM `user` WHERE `banned` IS NOT NULL')
有没有办法解决这个问题 - 或者我是否只需要获取一行然后从中访问COUNT(*)
?
答案 0 :(得分:2)
是的,你获取一列的行,但是那么难吗?
var count int
row := db.QueryRow("SELECT COUNT(*) FROM `user` WHERE `banned` IS NOT NULL")
err := row.Scan(&count)
请注意,如果您发现它太冗长(可能会删除行变量),则可能会压缩它。
我认为其他语言中的其他类似系统(例如JDBC)也没有提供本地快捷方式。
我发现我更容易处理一个我可以记忆和浏览的API而不是一个API,它拥有我可能愿意用来删除代码中一行的所有实用程序。
答案 1 :(得分:2)
对于记录,SQL Server存储过程将返回以下所有内容(同时):
在行集中,所有行都具有相同数量(一个或多个)命名的类型列。列名不必在行集中是不同的。
SQL Server无法识别任何特殊情况,例如具有单行或单列的单个行集;或单个输出参数。
其他数据库系统略有不同。