PostgreSQL"?"参数占位符不适用于" WITH"

时间:2016-09-12 23:32:09

标签: sql postgresql go

我试图以下列方式使用?(我在Golang中使用它来生成查询,但似乎它不依赖于Go):

WITH Tmp(name, enabled) AS (
    VALUES(?, ?),(?, ?)
) 
UPDATE table_groups 
    SET enabled = (SELECT enabled 
                   FROM Tmp 
                   WHERE table_groups.name=Tmp.name) 
WHERE table_groups.name IN (SELECT name FROM Tmp)

得到:

syntax error at or near ","

如果我用具体的值替换上述语句中的?,一切正常。将?WITH一起使用是否存在问题?如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:0)

Go不支持此功能。

如果您想要这个功能

,可以使用jmoiron/sqlx

使用sqlx(来自docs)的示例:

var levels = []int{4, 6, 7}
query, args, err := sqlx.In("SELECT * FROM users WHERE level IN (?);", levels)

// sqlx.In returns queries with the `?` bindvar, we can rebind it for our backend
query = db.Rebind(query)
rows, err := db.Query(query, args...)