【发布时间】:2016-09-13 08:00:59
【问题描述】:
我正在尝试通过以下方式使用?(我在 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 是否有问题,我该如何解决?谢谢。
【问题讨论】:
-
无关:不需要标量子查询。
-
我认为 Postgres 仅适用于编号占位符,即
$1。 -
您使用什么驱动程序包来处理 pgsql?您知道,Go 的标准库中不包含任何 RDBMS 的驱动程序,因此有必要告诉我们您在做什么。如果您使用
github.com/lib/pq、the docs,请仅提及$n样式参数,正如@Ainar-G 所建议的那样。 IOW,查询占位符的格式是特定于驱动程序的,而不是通用的。 -
@kostix:谢谢,我确实在使用 pq
标签: sql postgresql go