我有一些组有一个jsonb字段-目标
my SQL
SELECT DISTINCT groups.*
FROM groups
WHERE groups.user_id = 1 AND (
EXISTS (
SELECT * FROM jsonb_array_elements(targets) as a
WHERE a->>'name' ~* 'gender|age'
)
)
字符串
这将返回仅包含性别或仅包含年龄或同时包含性别和年龄的组。
如何修复它,使其仅返回具有性别 * 和 * 年龄的组
我的jsonb字段目标看起来像这样
[{"name"=>"gender", "value"=>"0"}, {"name"=>"age", "value"=>"1"}]
型
2条答案
按热度按时间pbpqsu0x1#
如何修复它,使其仅返回同时具有性别和年龄的组
您可以通过使用
GROUP BY
和HAVING
子句来实现这一点,通过使用count()
函数和case子句来确保这两个元素的存在:字符串
Demo here
ybzsozfc2#
你可以使用
jsonb_path_exists
。参见文档。字符串