Postgresql:只保留整数数组中的唯一值
Postgresql: only keep unique values from integer array
假设我有一个整数数组
1 6 6 3 3 8 4 4
它将始终采用 n*(pairs of number) + 2 (unique numbers)
.
的形式
是否有一种有效的方法来仅保留 2 个唯一值(即出现一次的 2 个)?
在这里,我想得到 1 和 8。
到目前为止我有:
SELECT node_id
FROM
( SELECT node_id, COUNT(*)
FROM unnest(array[1, 6, 6 , 3, 3 , 8 , 4 ,4]) AS node_id
GROUP BY node_id
) foo
ORDER BY count LIMIT 2;
你很亲近,我觉得:
SELECT node_id
FROM (SELECT node_id, COUNT(*)
FROM unnest(array[1, 6, 6 , 3, 3 , 8 , 4 ,4]) AS node_id
GROUP BY node_id
HAVING count(*) = 1
) foo ;
如果愿意,您可以使用 array_agg()
.
将它们重新分组到一个数组中
假设我有一个整数数组
1 6 6 3 3 8 4 4
它将始终采用 n*(pairs of number) + 2 (unique numbers)
.
是否有一种有效的方法来仅保留 2 个唯一值(即出现一次的 2 个)?
在这里,我想得到 1 和 8。
到目前为止我有:
SELECT node_id
FROM
( SELECT node_id, COUNT(*)
FROM unnest(array[1, 6, 6 , 3, 3 , 8 , 4 ,4]) AS node_id
GROUP BY node_id
) foo
ORDER BY count LIMIT 2;
你很亲近,我觉得:
SELECT node_id
FROM (SELECT node_id, COUNT(*)
FROM unnest(array[1, 6, 6 , 3, 3 , 8 , 4 ,4]) AS node_id
GROUP BY node_id
HAVING count(*) = 1
) foo ;
如果愿意,您可以使用 array_agg()
.