【发布时间】:2016-01-15 21:14:44
【问题描述】:
如何从另一个数组中排除匹配的元素?
Postgres 代码:
a1 := '{1, 2, 5, 15}'::int[];
a2 := '{1, 2, 3, 6, 7, 9, 15}'::int[];
a3 := a2 ??magic_operator?? a1;
在a3 中,我期望正好是 '{3, 6, 7, 9}'
最终结果
我和 lad2025 的解决方案运行良好。
array_position() 的解决方案需要 PostgreSQL 9.5 及更高版本,执行速度更快。
【问题讨论】:
-
这些数组中的元素是否总是像您的示例中那样排序?
-
我可以这样排序,没问题
-
[1,2,3] 和 [3,1,2] 的结果会是?你的问题不清楚。匹配的元素意味着它存在于两个数组中还是什么?
-
是的,左右两边混淆了。我的意思是,如果两者都匹配 - 从输出中排除。右侧,5 个不匹配 - 跳过。左侧不匹配 - 输出。
标签: sql arrays postgresql