我的sql结构有一个数组字段 值是
{5010011,5010031,5010041,5010081}
我执行查询。
Update users
set faces=uniq(array_cat(faces,ARRAY[5010011,5010031,5010041,5010081]))
我得到的结果是
{5010011,5010031,5010041,5010081,5010011,5010031,5010041,5010081}
我使用uniq()函数,但它不起作用。我想删除数组中的重复值。
答案 0 :(得分:1)
uniq(int[]) int[]
删除相邻重复
(强调我的)
因此它只删除相邻的重复项(后面紧跟相同值的值)。
本手册还说明了如何使用该功能:您需要先对数组进行排序,以便重复值彼此相邻:uniq(sort('{1,2,3,2,1}'::int[]))
所以在你的情况下:
Update users
set faces = uniq(
sort(array_cat(faces, ARRAY[5010011,5010031,5010041,5010081]))
)