duanjing1276
2019-06-12 19:01
浏览 222
已采纳

如何使用sqlx更新多行?

I'd like to update multiple rows in a single query:

//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)
}

But I get this runtime error:

sql: converting argument $3 type: unsupported type []int, a slice of int

How can I fix this?

图片转代码服务由CSDN问答提供 功能建议

我想在单个查询中更新多行:

   // threadIDs是一个可变长度的整数切片,例如[3 5 6] 
query:=“更新消息SET receive_deleted =?WHERE receiver_id =?AND thread_id IN?” 
_,错误:= database.SQL.Exec  (查询,1,userID,threadID)
if err!= nil {
 log.Fatal(err)
} 
   
 
 

但是我遇到了此运行时错误 :

  sql:转换参数$ 3类型:不支持的类型[] int,一个int 
   
 
 

我可以解决这个问题吗?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • duan5801 2019-06-12 20:28
    已采纳

    You can use sqlx.In which returns a new query and a new args slice that you then use instead of your original values, like so:

    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)
    }
    
    已采纳该答案
    评论
    解决 1 无用
    打赏 举报

相关推荐 更多相似问题