首页 文章

Postgres:在SQL中循环通过json数组?

提问于
浏览
1

我正在使用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(activity['values']['activityCompletions']['basic']['value'])

该表有两列:( membershipid integer整型主键,数据jsonb) . 我不知道如何在sql中处理这样的数组 . 该数组是可变长度的,可能包含也可能不包含activityHash ==所需值的条目 .

查询的期望结果将类似于SELECT membership,清除FROM表 .

2 回答

  • 0

    我在找jsonb_array_elements(活动)

  • 1

    我建议你查看这个link,它将指导你如何遍历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;
    

相关问题