0

database/sql私の知る限り、Goインターフェイスライブラリが期待する結果は、行または行の配列の2種類のみです。ただし、結果には少なくとももう1つのタイプ(単一の列)があります。

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

これを処理する方法はありますか?または、行をフェッチしてそこCOUNT(*)からアクセスする必要がありますか?

4

2 に答える 2

2

はい、1列の行をフェッチしますが、それはとても難しいですか?

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

冗長すぎる場合は、これが圧縮される可能性があることに注意してください(行変数を削除できます)。

他の言語(JDBCなど)の他の同様のシステムも、このショートカットをネイティブに提供していないと思います。

コード内の1行を削除するために使用できるすべてのユーティリティを備えたAPIよりも、覚えて参照できるAPIの方が扱いやすいと思います。

于 2012-09-21T16:26:04.077 に答える
2

レコードの場合、SQL Serverストアドプロシージャは次のすべてを(同時に)返します。

  • 整数の戻りコード
  • テキストと2つの整数コードを含む0個以上のメッセージ(多くの場合、警告またはエラー)
  • 0個以上の名前付きの型付きスカラー出力パラメーター
  • 0個以上の「行セット」。各行は0個以上の行の順序付きリストです。

行セット内では、すべての行に同じ数(1つ以上)の名前付きの型指定された列があります。列名は、行セット内で区別する必要はありません。

SQL Serverは、単一の行または単一の列を持つ単一の行セットなどの特殊なケースを認識しません。または単一の出力パラメータ。

他のデータベースシステムは少し異なります。

于 2012-09-21T17:37:58.967 に答える