当前位置: 首页 > 面试题库 >

如何使用sqlx在切片中查询mysql?

农诚
2023-03-14
问题内容

我想查询mysql数据库中的表以获取IN切片值:

var qids []int
//fill qids dynamically
err = database.SQL.Select(&quotes,
    "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(&quotes, query, args...)
if err != nil {
    log.Fatal(err)
}

// or just in one line:

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

另外,我建议您在这里看看:http :
//jmoiron.github.io/sqlx/有很多示例,包括 IN



 类似资料:
  • 问题内容: 我如何将下面的切片查询写入golang? 尝试过但不起作用 找不到任何东西。有任何想法吗? 先感谢您 问题答案: 使用只能指定过滤器。但是,您有一个预测: 可以使用来指定投影,因此这就是您可以应用in投影的方式: 另请注意,确定您过滤的属性是还是只是一个错字,应该是。如果是后者,您还可以使用按文档ID查询:

  • 问题内容: 这是从片中稍微修改的代码 它说切片参数的内容可以由函数修改,但其标头不能。如何在屏幕上打印newSlice2的标题? 问题答案: 切片标头由以下类型表示: 您可以使用package 将切片指针转换为: 然后,您可以像其他任何结构一样打印它: 输出将是(在Go Playground上尝试):

  • 这是来自切片的略微修改的代码 它表示slice参数的内容可以由函数修改,但其标头不能。如何在屏幕上打印newSlice2的标题?

  • 问题内容: 如何在MySql中运行此查询? 它会显示如下错误消息: 问题答案: 该语句/方法适用于PostgreSQL和Sybase(我想可能还有更多),所以也许您可以看一下: http://www.artfulsoftware.com/mysqlbook/sampler/mysqled1ch20.html 它应该向您展示一些使用MySQL的方法(以及PHP中的一两个方法,我只知道它不在您的标签列

  • 我有这个数组 因为我只想渲染前5张照片。。如何从阵列中获取前5张照片??

  • 问题内容: 我正在使用Firebase函数和Firebase Firestore开发用于存储用户数据的API。 我想使用存储在其字段中的属性来查找文档。这是Firebase文档,其中说明了如何实现相同的功能。 我想处理两种情况 在没有文件的情况下 有两个以上具有当前条件的文件 如何处理以上两种情况? 问题答案: 按照上面的注释中的“讨论”,在Cloud Function中,您可以使用方法返回的方法