我有一个称为fb_designs的Postgres 11表,该表具有一个json
列,其数据结构如下:
{
"listings": [
{
"id": "KTyneMdrAhAEKyC9Aylf",
"active": true
},
{
"id": "ZcjK9M4tuwhWWdK8WcfX",
"active": false
}
]
}
和tags
格式的character varying[]
列的{dWLaRWChaThFPH6b3BpA,BrYiPaUiou020hsmRugR}
列。两种长度都不确定。
我想做的是产生一些查询,让我用外行的话说
向我显示所有项目的所有结果。 活动状态和标签包含
BrYiPaUiou020hsmRugR
我已经走了这么远,但是我不确定如何添加WHERE uid = "foo"
,WHERE tags contains "foo", "bar
和WHERE title is like %hoot%
SELECT id, title, tags, selected_preview_image, items
FROM fb_designs r, json_array_elements(r.items#>'{listings}') obj
WHERE obj->>'active' = 'true'
GROUP BY id
答案 0 :(得分:-1)
如果全部为真,则都不为假。听起来您想否定false否定遏制操作。
select * from fb_designs where
not items::jsonb @> '{"listings":[{"active": false}]}'
and tags && ARRAY['BrYiPaUiou020hsmRugR']::varchar[]