我有postgresql 8.4。
我正在尝试建立一个查询但没有成功。如果相关行中不存在元素,我想将元素插入到数组中。
表“测试”:
+------------------+------------------+
| id | varchar(20) |
| timestp | timestamp |
| place | varchar(20) |
| myarray[][] | varchar[14][254] |
+------------------+------------------+
+---------+---------------------+-----------+----------------+
| xyz | 2010-01-01 10:10:10 | nowhere | "{abc,qwert}" |
+---------+---------------------+-----------+----------------+
所以我想将“{fgh,gfdsa}”添加到 myarray WHERE (id='xyz' AND timestp="2010-01-01 10:10:10" AND place='nowhere')如果它还没有在数组
我试过这样的>
UPDATE test
SET myarray = array_append(wascon2,'{fgh,gfdsa}')
WHERE (id='xyz' AND timestp="2010-01-01 10:10:10" AND place='nowhere'
AND NOT EXISTS 1 FROM test WHERE (myarray='{fgh,gfdsa}')));
这不起作用,每次我调用它时它都会附加数组。
+---+---------------------------+-------------------------------------------+
|xyz|2010-01-01 10:10:10|nowhere|{"{abc,qwert}","{fgh,gfdsa}","{fgh,gfdsa}"}|
+---+---------------------------+-------------------------------------------+
如果认为我应该使用 >
myarray = ANY ('{fgh,gfds}'::varchar[])
不知何故,但我不知道如何..
对我来说最好的方法是一个 plpgsql 函数。