json - Postgres : Select all fields where json field array contains a particular value?

标签 json postgresql

假设我有一个 userscompanies表,其中 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/

相关文章:

c# - Newtonsoft JSON 动态属性名称

postgresql - 链接到静态库以构建静态可执行文件

json - Kibana/ElasticSearch仪表板json模式定义

javascript - 如何使 jQuery JSON 返回的数据全局可用并提供次要字符串解析帮助?

IE 上的 AJAX POST 请求失败,错误为 "No Transport"?

json - 将 JSON 绑定(bind)到嵌套的 Grails 域对象

postgresql - SymmetricDS pk 替代方案

postgresql - 在 MacOS 上安装 psycopg2 失败,错误消息不明确

mysql - 使用 taps 从 heroku 导出数据库时出现段错误

mysql - 当用户在 Django 和 Postgres 中接受好友请求时,如何将两行保存到表中?