我正在努力从我的 PostgreSQL 数据库中的 JSON 列中获取数据。在我们的users
表中,我们有一known_ips
列,它是一个 JSON 列,保存给定用户已知的 IP 地址的平面数组,如下所示:
# select email, known_ips from users limit 3;
email | known_ips
-------------------+-------------------------------
user1@example.com | ["192.168.1.1","192.168.1.2"]
user2@example.com | ["192.168.1.3"]
user3@example.com | ["192.168.1.2"]
(3 rows)
Run Code Online (Sandbox Code Playgroud)
我想要做的是从其列中的一组 IP 地址(在本例中为 192.168.1.1 或 192.168.1.2)中选择具有 IP 地址的所有用户known_ips
。因此,在这种情况下,user1 和 user3 的 IP 地址为 .1 或 .2,因此我希望返回它们,而不是 user2,因为我不是在寻找 .3 地址。
我尝试了以下查询,但都无济于事:
database=# select email, ip from users, json_array_elements(known_ips) as ip where ip in("192.168.1.1","192.168.1.2");
ERROR: column "192.168.1.1" does not exist
LINE 1: ... json_array_elements(known_ips) …
Run Code Online (Sandbox Code Playgroud)