我想在mysql数据库中查询一个表中的值:
var qids []int
//fill qids dynamically
err = database.SQL.Select("es,
"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 []
我怎样才能解决这个问题?
解决方法:
sqlx有一个很好的帮助:In()我们只需要准备查询args和Rebind,如下所示:
var qids []int
// fills qids on query dynamically
query, args, err := sqlx.In("SELECT * FROM quote WHERE qid IN (?)", qids)
if err != nil {
log.Fatal(err)
}
// sqlx.In returns queries with the `?` bindvar, we can rebind it for our backend
//
query = database.SQL.Rebind(query) // database.SQL should be a *sqlx.DB
err = database.SQL.Select("es, query, args...)
if err != nil {
log.Fatal(err)
}
// or just in one line:
err = database.SQL.Select("es, database.SQL.Rebind(query), args...)
另外我建议你看看这里:http://jmoiron.github.io/sqlx/有很多例子,包括IN