Postgres:在SQL中循环通过json数组等价物?
我正在使用postgres 9.6.3,需要将以下python代码转换为sql查询:Postgres:在SQL中循环通过json数组等价物?,sql,json,postgresql,Sql,Json,Postgresql,我正在使用postgres 9.6.3,需要将以下python代码转换为sql查询: data = response.json() activities = data['Response']['data']['activities'] for activity in activities: activityHash = int(activity['activityHash']) if activityHash == 2659248071: clears = int
data = response.json()
activities = data['Response']['data']['activities']
for activity in activities:
activityHash = int(activity['activityHash'])
if activityHash == 2659248071:
clears = int(activity['values']['activityCompletions']['basic']['value'])
该表有两列:(membershipid integer主键,data jsonb)。我不知道如何在sql中处理这样的数组。该数组长度可变,可能包含activityHash==所需值的条目,也可能不包含该条目
查询所需的结果类似于SELECT membershipid,从表中清除。我建议您查看这篇文章,了解如何在Postgres中遍历JSONB 尝试以下查询,看看是否适合您:
SELECT
membershipid,
'data' -> 'activity' -> 'response' -> 'data' -> 'activities' ->> 'activityHash' AS activityHash,
'data' -> 'activity' -> 'response' -> 'data' -> 'activities' -> 'activityHash' -> 'values' -> 'activityCompletions' -> 'basic' ->> 'value' AS clears
FROM yourtablename
WHERE
('data' -> 'activity' -> 'response' -> 'data' -> 'activities' ->> 'activityHash')::int = 2659248071;
我在寻找jsonb_数组_元素(活动)您实际上希望它做什么?你有什么SQL开始吗?除了SQL等价物之外,你知道吗?您的问题,并添加一些样本数据和基于该数据的预期输出。请不要在评论中发布代码或附加信息