1

次のパラメータのリストがあります。

params := [(p_1, m_1), ..., (p_n, m_n)]  // p_i, m_i : int

ここで、リストを通過してパラメーターに一致するクエリを作成したいと思います: ( forの後の部分は、 PostgreSQL 9.4で記述したい疑似コードです)

SELECT * FROM X WHERE p = p_i AND m = m_i  for (p_i, m_i) in params

Go でこのクエリを記述する方法 ( jmoiron.github.io/sqlxまたは standardを使用database/sql)?

type Param struct {
    P, M int
}
params := []Param{{1,2}, {3,4}}
// ???
4

1 に答える 1

1

コメントに記載されているように、INチェックはニーズを満たす必要があります。

params を調べてIN、クエリの一部を生成します。

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 には、上のユーティリティであるmodlsqlxを使用しました。

于 2015-07-09T12:44:56.907 に答える