12

INスライスの値について mysql データベースのテーブルをクエリしたい:

var qids []int
//fill qids dynamically
err = database.SQL.Select(&quotes,
    "SELECT * FROM quote WHERE qid IN $1", qids)
if err != nil {
    log.Println(err)
}

しかし、私はこのエラーが発生します:

sql: converting Exec argument #0's type: unsupported type []int, a slice
quotes []

どうすればこれを修正できますか?

4

3 に答える 3

-1

[]intのせいで
これを試してみてください

type Int64Array []int64

// Value returns the driver compatible value
func (a Int64Array) Value() (driver.Value, error) {
var strs []string
for _, i := range a {
    strs = append(strs, strconv.FormatInt(i, 10))
}
return "{" + strings.Join(strs, ",") + "}", nil
}

次に、int64 をクエリに渡します

db.Queryx("SELECT * FROM quote WHERE qid IN $1", int64IDs)

詳しくはこちらをチェック

于 2016-11-12T18:02:50.430 に答える
-1

タグは、使用していることを示していますsqlx。in クエリをサポートしています。IN

だからあなたはすることができます

var qids []int
//fill qids dynamically
rows, err = db.Query(&quotes, "SELECT * FROM quote WHERE qid IN ($1)", qids)
if err != nil {
    log.Println(err)
}
// scan the rows
于 2016-11-12T20:50:30.443 に答える