sql - SQL 与数组内的过滤器重叠
问题描述
以前我尝试使用重叠来查找数据在数组中具有任何值的数据。我使用 postgres
SQL 语句为:
SELECT *,
ARRAY_AGG("reserve"."state_id" ) AS "states"
FROM "orders_order"
JOIN "reserve" ON ("order"."id" = "reserve"."order_id")
GROUP BY "order"."id"
HAVING (ARRAY_AGG("reserve"."state_id" )&& array['test', 'test_new']::varchar(255)[])
例如,如果我的状态如下所示:
{'test', 'new_test' }
如果状态test
在数组中,它会给我所有的储备
现在我需要接收状态,如果只是['test']
在数组中
上述示例中的预期输出必须为空
一些例子来澄清:
1. {'test', 'new_test' } -> false
2. {'test', 'test' } -> true
3. {'test'} -> true
我怎样才能做到这一点。我的 SQL 语句需要添加什么?
解决方案
您正在寻找@>
(包含运算符):
SELECT
array['test'] @> array['test','new_test'], --false
array['test'] @> array['test','test'], --true
array['test'] @> array['test']; --true
?column? | ?column? | ?column?
----------+----------+----------
f | t | t
推荐阅读
- sql - 如果其他代码块,如何使用事务获取存储过程以执行?
- swift - 一键多值的Alamofire参数
- java - Java中是否有任何有效的替代JFrame的方法?
- r - 我正在尝试根据 MODIS 的图块编号拆分我的栅格列表,以便每天编写一个合并/马赛克的函数
- reactjs - 如何将打字稿中的目标设置为rxjs中的fromEvent()
- config - 将引导主题与 nuxt.js 项目集成
- django - 如何使用 Django、Nginx、Docker 和 Traefik 管理媒体文件?
- matlab - 强制 Matlab Coder 创建结构
- javascript - 放置非公开函数 AMD 的正确位置
- perl - 变量名中的变量?