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

如何使用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?

  • 写回答

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)
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据