如何使用 sqlx 更新多行?
How to update multiple rows using sqlx?
我想在单个查询中更新多行:
//threadIDs is a variable length slice of integers like [3 5 6]
query := "UPDATE message SET recipient_deleted=? WHERE recipient_id=? AND thread_id IN ?"
_, err := database.SQL.Exec( query, 1, userID, threadIDs)
if err != nil {
log.Fatal(err)
}
但是我得到这个运行时错误:
sql: converting argument type: unsupported type []int, a slice of int
我该如何解决这个问题?
您可以使用 sqlx.In
,其中 returns 一个新的查询和一个新的 args 切片,然后您可以使用它来代替您的原始值,如下所示:
query := "UPDATE message SET recipient_deleted=? WHERE recipient_id=? AND thread_id IN (?)"
qry, args, err := sqlx.In(query, 1, userID, threadIDs)
if err != nil {
panic(err)
}
if _, err := database.SQL.Exec(qry, args...); err != nil {
panic(err)
}
我想在单个查询中更新多行:
//threadIDs is a variable length slice of integers like [3 5 6]
query := "UPDATE message SET recipient_deleted=? WHERE recipient_id=? AND thread_id IN ?"
_, err := database.SQL.Exec( query, 1, userID, threadIDs)
if err != nil {
log.Fatal(err)
}
但是我得到这个运行时错误:
sql: converting argument type: unsupported type []int, a slice of int
我该如何解决这个问题?
您可以使用 sqlx.In
,其中 returns 一个新的查询和一个新的 args 切片,然后您可以使用它来代替您的原始值,如下所示:
query := "UPDATE message SET recipient_deleted=? WHERE recipient_id=? AND thread_id IN (?)"
qry, args, err := sqlx.In(query, 1, userID, threadIDs)
if err != nil {
panic(err)
}
if _, err := database.SQL.Exec(qry, args...); err != nil {
panic(err)
}