我有一个存储条件的表
CREATE TABLE conditions (field_id TEXT, value BOOLEAN)
像这样的条目
field_id | 价值 |
---|---|
f1 | 真的 |
f2 | 错误的 |
另一个表将用户的字段值存储在 jsonb 列中
CREATE TABLE users (id BIGINT, fields JSON)
像这样的条目
ID | 价值观 |
---|---|
1 | {“f1”:真,“f2”:假} |
2 | {“f1”:真,“f2”:真} |
3 | {“f1”:假,“f2”:假} |
我想编写一个查询,在我的示例中只返回 1 的用户。
这是一个经典的关系除法问题,您只需要将 JSON 还原为单独的键/值行
db<>小提琴
我个人建议使用
jsonb
type 而不是json
(本质上是一个字符串)。然后你可以做这样的事情:但是你也可以扩展 json 并像这样匹配它:
db小提琴