我有一個查詢,它回傳一個名為 的 JSON 列record,該列由子查詢生成。
SELECT record FROM (my json query) records;
每條記錄都包含一組標簽物件:
{
"tags": [
{
"id": 3,
"name": 'foo'
},
{
"id": 10,
"name": 'bar'
}
],
// other props
}
我想修改我的查詢選擇所有records,其中tags包含與特定ID的標簽,但我不知道如何去,沒有加入其它子查詢。是否有任何我遺漏的功能或操作可以僅使用 where 子句來實作這一點?
在偽代碼中,我可以做這樣的事情嗎?
SELECT record FROM (my json query) records
WHERE 3 = ANY(get_ids_from_objects(record->'tags', 'id'));
出于代碼原因,我也不想修改創建 JSON 結構的子查詢,這就是我排除它的原因。
uj5u.com熱心網友回復:
您可以使用 contains 運算子 @>
select *
from (your query)
where record @> '{"tags": [{"id": 3}]}'
這假設該列record是型別jsonb(它應該是)。如果不是,則需要投射它:record::jsonb
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/399475.html
標籤:sql PostgreSQL的
下一篇:SQL查找/計數相似的重復項
