我有我需要在JSON數組中搜索多個值的場景。以下是我的模式。如何搜索PostgreSQL中的JSON數組中的多個項目9.3
ID DATA
1 {"bookIds" : [1,2,3,5], "storeIds": [2,3]}
2 {"bookIds" : [1,2], "storeIds": [1,3]}
3 {"bookIds" : [11,12,10,9], "storeIds": [4,3]}
我希望所有行的值爲1,2。下面是我正在使用的查詢(這是查詢是由他的一個同事stackoverflow用戶先生klin信貸給他寫的)。
select t.*
from JSONTest t, json_array_elements(data->'bookIds') books
where books::text::int in (1, 2);
但是,輸出我在輸出中重複行,下面是我的輸出。
id data
1 {"bookIds" : [1,2,3,5], "storeIds": [2,3]}
1 {"bookIds" : [1,2,3,5], "storeIds": [2,3]}
2 {"bookIds" : [1,2], "storeIds": [1,3]}
2 {"bookIds" : [1,2], "storeIds": [1,3]}
我只想輸出兩行是id 1,2。我怎樣才能做到這一點?我不想使用distinct由於其他方面的限制,
SQL小提琴:http://sqlfiddle.com/#!15/6457a/2
感謝這給了我一些繼續:)這種操作是多麼昂貴? –