假设我有一个 users
和 companies
表,其中 1 个用户可以为多个公司工作。在这种情况下,我使用 JSON 字段对其进行建模。
users
- id: PK
- jobs: json
样本 jobs
字段:[{"company_id": 1, "title": "Engineer" }, {"company_id": 2, "title": "Accountant"}]
给定一个公司 ID,有没有一种方法可以运行 1 个 SQL 查询(Postgres 9.4)来提取在该公司工作过的所有用户 ID?像这样的东西:
select id from users where map(jobs, "company_id") contains <?>
最佳答案
这可能不是最好的方法,但这是可行的:
SELECT id FROM
(SELECT id, json_array_elements(jobs) as a FROM table) b
WHERE a->>'company_id'='1';
关于json - Postgres : Select all fields where json field array contains a particular value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30232411/