【发布时间】:2019-11-28 02:50:19
【问题描述】:
不确定这是怎么可能的,但我发现没有任何答案是远程接近的。
假设我有表 A 和表 B。表 B 有一个 jsonb 列,其中键和值都是整数。例如{"10000":"12345678","10002":"12345680}
我想查询表 A 和 A 的结果,通过键检查结果之一是否在该 json 对象中并返回 val。这些值是一个unix时间戳,我想对此进行排序。
我尝试了各种 jsonb 函数,但没有什么能接近我正在尝试的
我尝试了类似的方法,但得到了error。
SELECT a.from_id, b.*, info.id, info.date
FROM table a,
table b,
jsonb_to_recordset(jsonb_each_text(b.mem_ids)) AS info(id int, date int)
WHERE a.from_id = info.id
ORDER BY info.date
DESC LIMIT 1
我只获取它在与表 A 中的 id 匹配的 json 对象中找到的第一个结果。 不确定如何使用 jsonb 列来完成。
更新: 示例表
table a
|from_id | to_id |
100001 | 100005
100002 | 100005
100003 | 100005
table b
| id | mem_ids|
1 | {"100075":"12345678","100003":"12345680}
所以我正在尝试做的是查询或某种连接,它将根据在案例 100005 中提供 to_id 从表 a 中获取结果 from_id,并从这些结果中查看是否存在 json obejct使用与 from_id 之一匹配的键。如果是这样,则从匹配的键中返回该值。 看起来有点复杂,但不幸的是,这就是现在的结构。
【问题讨论】:
-
从您的表格中添加一些 text 格式的示例行,以轻松模拟您的问题。
-
我没听懂。请添加一些示例数据和预期输出
标签: sql postgresql jsonb