0
我们的数据库有一个表“日志”像这样的嵌套值:检索和PostgreSQL JSON列
id | purchases (json)
1 {"apple":{"price":5,"seller":"frank"}, "bred":{"price":3,"seller":"kathy"}}
2 {"milk":{"price":3,"seller":"anne"}, "banana":{"price":2,"seller":"frank"}}
3 {"bred":{"price":4,"seller":"kathy"}}
我们想检索包含"seller":"kathy"
所有记录。我们试图简单的查询是这样的:
SELECT id FROM log WHERE purchases ->> 'seller' LIKE 'kathy'
SELECT id FROM log WHERE purchases = '{"seller":"kathy"}'
研究,我们这里和其他地方好几个小时......这似乎有点更加复杂,因为这些值是嵌套?我们发现例如一些java或pgplsql实现,但我们仍然希望有一种“纯SQL”的方式。什么是合适的解决方案?或者我们应该重新组织我们的内容是这样的:
id | purchases (json)
1 [{"product":"apple","price":5,"seller":"frank"},{"product":"bred","price":3,"seller":"kathy"}]
2 [{"product":"milk","price":3,"seller":"anne"},{"product":"banana","price":2,"seller":"frank"}]
3 [{"product":"bred","price":4,"seller":"kathy"}]
但我们发现,这将是更为复杂,因为我们必须在查询中爆炸的阵列。任何简短提示?谢谢!
完善,有很大帮助,感谢@dmitry,我明白得多了。 – Rainer