这是我的代码(杜松子酒很好用)
query :=`
UPDATE posts SET liked_by = uniq(array_append(liked_by, $1))
WHERE id = $2
RETURNING liked_by`
return p.DB.Exec(query, userID, post.ID)我所犯的错误
pq: function uniq(integer[]) does not exist没有uniq(),我的代码工作得很好。但是数组采用的是重复值。我想确保我的数组只包含唯一的值。
发布于 2022-09-26 03:05:41
问题在于您的SQL (不是Go或lib/pq);您可以通过运行以下SQL来复制这个问题:
select uniq('{1,2,3,4}'::integer[])有关潜在解决方案的讨论,请参见此this question,最简单的可能是:
select array_agg(distinct x) from unnest(array_append('{1,2,3,4}'::integer[], 4)) t(x)将其集成到您的代码中可以得到如下(未经测试的!):
query :=`
UPDATE posts SET
liked_by = (select array_agg(distinct x) from unnest(array_append(liked_by, $1)) t(x))
WHERE id = $2
RETURNING liked_by
`https://stackoverflow.com/questions/73849107
复制相似问题