我有一个包含网络资产的数据库,每个都可以有多个主机名。有时,我们会错误地为同一台机器创建两条记录,然后不得不“合并”这些资产。其中一部分是合并他们的主机名列表。
我当前的解决方案涉及将合并资产的hostnames
字段设置为以下选择:
SELECT array_agg(DISTINCT host)
FROM (
SELECT unnest(hostnames)
FROM asset
WHERE asset.id IN (?, ?)
) AS bothassets(host);
(见SQL Fiddle)
在PSQL中是否有一种更清晰的方式来表示相同的“唯一数组值”逻辑?组合数组的顺序对我来说无关紧要,但我不能让它包含两次相同的值。
最佳答案
我觉得没有更干净的方法了。
只有一点点短:
SELECT ARRAY(
SELECT DISTINCT unnest(hostnames)
FROM asset
WHERE asset.id IN (?, ?)
-- ORDER BY 1
);
关于postgresql - 在PostgreSQL中连接varchar [],保持不同的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37934110/