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

如何使用Golang在SQL中执行IN查找?

丁安宜
2023-03-14
问题内容

Go对于此SQL查询中的第二个参数想要什么。我正在尝试IN在postgres中使用查找。

stmt, err := db.Prepare("SELECT * FROM awesome_table WHERE id= $1 AND other_field IN $2")
rows, err := stmt.Query(10, ???)

我真正想要的是:

SELECT * FROM awesome_table WHERE id=10 AND other_field IN (this, that);

问题答案:

查询只是使用varargs来替换sql中的参数,因此,在您的示例中,您只需要执行

rows, err := stmt.Query(10)

例如,这个和第二个示例的内容是动态的,那么您将

stmt, err := db.Prepare("SELECT * FROM awesome_table WHERE id=$1 AND other_field IN ($2, $3)")
rows, err := stmt.Query(10,"this","that")

如果“ IN”部分具有可变的args,则可以执行(播放)

package main

import "fmt"
import "strings"

func main() {
    stuff := []interface{}{"this", "that", "otherthing"}
    sql := "select * from foo where id=? and name in (?" + strings.Repeat(",?", len(stuff)-1) + ")"
    fmt.Println("SQL:", sql)
    args := []interface{}{10}
    args = append(args, stuff...)
    fakeExec(args...)
    // This also works, but I think it's harder for folks to read
    //fakeExec(append([]interface{}{10},stuff...)...)
}

func fakeExec(args ...interface{}) {
    fmt.Println("Got:", args)
}


 类似资料:
  • 问题内容: 如何在Firebase Android中查询SQL IN子句?我想在Firebase Recycler适配器中使用它,以便根据某些条件仅检索某些子级。类似于以下语句: 我需要一个Firebase查询才能在Firebase Recycler适配器中使用它。 问题答案: 我找到了解决方案:我们无法使用。相反,我们必须创建可扩展的自定义适配器。 要将值传递给此适配器,首先我们必须使用检索数据

  • 问题内容: 我想知道是否有更优雅的方法来使用Spring的JDBCTemplate进行IN()查询。目前,我正在执行以下操作: 这是很痛苦的,因为如果我只有九行用于构建IN()查询的子句。我想要类似预准备语句的参数替换 问题答案: 你需要一个参数源: 仅当返回类型的实例时,此方法才有效NamedParameterJdbcTemplate

  • 问题内容: 嗨,我正在尝试执行脚本以使用Golang将数据填充到数据库中 问题是我遇到了错误: 我认为问题是执行人员认为是dbname的最后一个参数(sql脚本路径) 终端中的以下命令正在运行: 但我尝试在Go中复制以自动执行脚本。 该脚本具有删除表,创建表,插入和具有FK关系的PK,这是一个非常完整的脚本,因此我无法逐行执行,因此我决定执行de mysql程序以将数据插入数据库中。 有什么建议?

  • 问题内容: 有没有一种方法可以对数据存储区进行查询?我尝试了以下无济于事。 错误出 让我了解数据存储区中的所有类别 } 在icza回答之后 问题答案: 通常,数据存储区不支持过滤器。清单文档列出了允许的运算符: 您可以为要作为过滤依据的数组中的每个元素执行一个 单独的 查询。同样,如果元素在连续范围内,则可以用和代替。例如: 还要注意,虽然通常不支持,但是如果属性是实体键本身,则可以使用函数获取由

  • 问题内容: 我想通过调用CouchDB查询特定文档的列表。 使用SQL,我会做类似的事情 在CouchDB中按一个字段或另一个字段执行此操作的诀窍是什么? 问题答案: 您需要使用views查询参数来获取具有指定集中键的记录。 接着 要同时检索文档内容,只需将查询参数添加到您的请求中。 UPD :也许您可能有兴趣通过此参考ID(2,4,56)来检索文档。默认情况下,CouchDB视图使用它们所属的文

  • 要在spark sql中运行sql语句以联接PostgreSQL中的两个表,请执行以下操作: 数据库引擎会执行联接操作并发回联接结果吗?或者数据库会将表_1和表_2的所有记录发送给spark job和spark job进行连接吗?是否有一些文档来解释此操作?谢谢