假设我有一个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 <?>
答案 0 :(得分:3)
可能不是最好的方法,但这有效:
SELECT id FROM
(SELECT id, json_array_elements(jobs) as a FROM table) b
WHERE a->>'company_id'='1';
答案 1 :(得分:2)
这应该可以解决问题:
SELECT id FROM users WHERE jobs @>'[{"company_id":1}]'