我试图以下列方式使用?
(我在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
一起使用是否存在问题?如何解决这个问题?感谢。
答案 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...)