我的目标是要获取一组相关父记录的相关子记录列表。
使用SQL可以完成以下工作
SELECT id FROM children WHERE parent_id IN (
19036,19037
)
使用golang时出现以下错误。
使用逗号分隔的字符串时
import (
"database/sql"
"github.com/lib/pq"
)
// db is a valid XODB struct generated from https://github.com/xo/xo
var ids []string{"19036","19037"}
const sqlstr = `SELECT ` +
`id ` +
`FROM children ` +
`WHERE parent_id in ($1) `
q, err := db.Query(sqlstr, strings.Join(ids, ","))
if err != nil {
return nil, err
}
导致pq:整数输入错误的语法:“ 19036,19037”
使用一片整数时
var ids []int{19036,19037}
const sqlstr = `SELECT ` +
`id ` +
`FROM children ` +
`WHERE parent_id in ($1) `
q, err := db.Query(sqlstr, ids)
if err != nil {
return nil, err
}
导致sql:转换参数$ 1类型:不支持的类型[] int,一个int切片。
使用fmt.Sprintf创建sql字符串有效
var ids []string{"19036","19037"}
var sqlstr = `SELECT ` +
`id ` +
`FROM children ` +
`WHERE parent_id in ($1) `
sqlstr = fmt.Sprintf(sqlstr, strings.Join(ids, ","))
q, err := db.Query(sqlstr)
if err != nil {
return nil, err
}
但是我正在寻找一种将int切片或逗号分隔的字符串传递到数据库/ sql in查询中的方法。你会怎么做?