Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgres:在SQL中循环通过json数组等价物?_Sql_Json_Postgresql - Fatal编程技术网

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

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

我正在使用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主键,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等价物之外,你知道吗?您的问题,并添加一些样本数据和基于该数据的预期输出。请不要在评论中发布代码或附加信息