1
鑑於表-A這樣的:選擇 「其中」 與PostgreSQL和JSONB
id | name
----+------
1 | aaaa
2 | bbbb
3 | cccc
我可以明顯地發出以下查詢:
SELECT * FROM table_a WHERE name IN ('aaaa', 'bbb');
但考慮到表-B這樣的:
id | data
----+------------------
1 | {"name": "aaaa"}
2 | {"name": "bbbb"}
3 | {"name": "cccc"}
我該如何發出一個查詢「給我所有包含這個值列表的鍵名的值的行?」
我知道我可以使用jsonb operator @>來檢查每個組合,但不幸的是我不得不發出儘可能多的查詢作爲我想檢查的值的數量。有沒有辦法做到這一點在一個查詢?
UPDATE:
我找到了解決的時候了:
select * from table_b where data #>> '{name}' IN ('aaaa', 'bbb');
謝謝,我在此期間找到了一個類似的解決方案:D我會在這裏留下問題,因爲我很難用谷歌上的常見關鍵字找到它。顯然他們也有類似的查詢計劃。 –
@GuybrushThreepwood:由於答案是正確的,你需要考慮接受它。 [手冊中的''json' /'jsonb'操作符。](http://www.postgresql.org/docs/current/interactive/functions-json.html) –