Postgresql扩展名intarray uniq

时间:2018-01-20 10:35:35

标签: sql postgresql

我的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()函数,但它不起作用。我想删除数组中的重复值。

1 个答案:

答案 0 :(得分:1)

Quote from the manual

  

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]))
                   )