Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL select查询中展开int对列表_Sql_Postgresql_Go_Sqlx - Fatal编程技术网

如何在SQL select查询中展开int对列表

如何在SQL select查询中展开int对列表,sql,postgresql,go,sqlx,Sql,Postgresql,Go,Sqlx,我有以下参数列表: params := [(p_1, m_1), ..., (p_n, m_n)] // p_i, m_i : int 现在我想构建一个查询,通过列表匹配参数: (for后面的部分是一个伪代码,我想在PostgreSQL9.4中编写) 如何在Go中编写此查询(使用或标准数据库/sql) 如注释所述,检查中的应满足您的需要: 在查询的部分中,检查参数以生成: paramStr := make([]string, len(params), len(params)) for i,

我有以下参数列表:

params := [(p_1, m_1), ..., (p_n, m_n)]  // p_i, m_i : int
现在我想构建一个查询,通过列表匹配参数: (for后面的部分是一个伪代码,我想在PostgreSQL9.4中编写)

如何在Go中编写此查询(使用或标准
数据库/sql


如注释所述,检查中的
应满足您的需要:

在查询的
部分中,检查参数以生成

paramStr := make([]string, len(params), len(params))
for i, p := range params {
    paramStr[i] = fmt.Sprintf("(%d, %d)", p.P, p.M)
}
然后,加入params并执行它:

err := dbm.Select(&rows, "SELECT * FROM X WHERE (p, m) IN (%s)",
        strings.Join(paramStr, ","))

在这里,对于select,我使用了它,它是一个在
sqlx
之上的实用程序,我对Go一无所知,但是在SQL中你可以使用它:
其中(p,m)在((1,2),(3,4),…)
我认为在生产中应该使用
sqlx.in
。但现在这是一个细节。
paramStr := make([]string, len(params), len(params))
for i, p := range params {
    paramStr[i] = fmt.Sprintf("(%d, %d)", p.P, p.M)
}
err := dbm.Select(&rows, "SELECT * FROM X WHERE (p, m) IN (%s)",
        strings.Join(paramStr, ","))