sql - 如何从子查询返回多个字段的数组

标签 sql postgresql

我需要返回返回多个字段的子查询数组的顶级查询。简单的 select array(select ...); 由于以下错误而无法工作:

subquery must return only one column

部分查询:

(SELECT array(SELECT
                logs_log.message -> 'slot_date',
                logs_log.message -> 'start_time',
                logs_log.message -> 'end_time',
                logs_log.message -> 'source',
                logs_log.message -> 'phone_number'
              FROM
                logs_log
              WHERE
                logs_log.message ->> 'phone_number' = leads_lead.phone_number))
  AS previous_appointments

有什么想法可以实现我上面描述的结果吗?

logs_log表:

id, object_id, action_time, content_type_id, user_id, message
28138, 0d36a20d-a251-41c3-ba7e-2d270004f4b1, 2017-01-27 06:48:06.550265+00, 18, 1, {"source": "driver_email", "end_time": "13:30:00", "slot_date": "0333-03-23", "start_time": "13:00:00", "phone_number": "1231231231"}
28137, 0d074daa-0c77-4f96-b512-248cdfb9263b, 2017-01-24 21:31:16.140453+00, 18, 1, {"source": "driver_email", "end_time": "13:30:00", "slot_date": "3333-03-23", "start_time": "13:00:00", "phone_number": "9111111992"}

leads_lead 表:

id, first_name, second_name, phone_number, city_id, source_id, external_id, attributes, created_at, ip_address, partner_id, tags
ab99dbba-d339-407a-8e2d-c0ffd676213b,Денис,Антонов,7123123123,b3b62c53-6815-4898-b3b6-23a1196c1986,7ee38a21-32d0-4362-8519-0bc6e6ce37b8,20391438-4d19-48b3-aae0-8d1ab0d7ef93,"""{\""uuid\"":\""20392223-4d19-48b3-aae0-8d1ab0d7ef93\""}""",2016-11-07 17:30:00.583425+00,,,

最佳答案

将您的子选择更改为

(SELECT array_agg(
           array[
              logs_log.message -> 'slot_date',
              logs_log.message -> 'start_time',
              logs_log.message -> 'end_time',
              logs_log.message -> 'source',
              logs_log.message -> 'phone_number'
           ]
        )
 FROM logs_log
 WHERE logs_log.message ->> 'phone_number' = leads_lead.phone_number
) AS previous_appointments

关于sql - 如何从子查询返回多个字段的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41889482/

相关文章:

postgresql - 角色与 PostgreSQL 中的 pg_terminate_backend 和/或 pg_cancel_backend 管理函数之间的关系

python - Flask、Python、SQLalchemy、SQLalchemy-searchable 不返回匹配文本

java - 使用 hibernate native 查询的错误 BigInteger 结果

SQL Server 游标将值包含在选择中

mysql - 错误代码: 1111 Invalid use of group function

postgresql - PG 中的动态 SQL 和 Setof 函数

sql - 有没有更好的方法来提取一天中的时间?

sql - django:datediff sql 查询?

mysql - 在 MySQL 中通过分隔符拆分并获取字符串的一部分

sql - 从两个表创建第三个表