How to use sqlx to query mysql IN a slice?

sqlx has a great helper for that: In() we just have to prepare the query by taking the args and Rebind, like this:

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(&quotes, query, args...)
if err != nil {
    log.Fatal(err)
}

// or just in one line:

err = database.SQL.Select(&quotes, database.SQL.Rebind(query), args...)

Also I recommend you take a look here: http://jmoiron.github.io/sqlx/ there're a lot of examples including IN

Tags:

Mysql

Go

Sqlx