【发布时间】:2018-09-11 23:37:44
【问题描述】:
使用以下 SQL 查询,我想添加一个 JSON 对象数组,该数组包含另一个表中的数据,基于 posts.liked_by 数组:
SELECT
p.id,
p.author,
p.content,
u2.id,
u2.username,
p.liked_by AS likedby
FROM posts p
INNER JOIN users u1
ON p.author = u1.id
LEFT JOIN users u2
ON u2.id = ANY(p.liked_by)
我得到了预期的输出
╔════╤════════╤═════════════╤══════════╤═════════╗
║ id │ author │ content │ username │ likedby ║
╠════╪════════╪═════════════╪══════════╪═════════╣
║ 1 │ 1 │ Lorem Ipsum │ John Doe │ {1, 2} ║
╚════╧════════╧═════════════╧══════════╧═════════╝
现在,我想将 likedby 列修改为包含用户数据的对象数组,按照以下内容:
+----+--------+-------------+----------+-----------------------------------------------------------------+
| id | author | content | username | liked_by |
+----+--------+-------------+----------+-----------------------------------------------------------------+
| 1 | 1 | Lorem Ipsum | John Doe | [{id: 1, username: "John Doe"}, {id: 2, username: "Sam Smith"}] |
+----+--------+-------------+----------+-----------------------------------------------------------------+
posts 表的数据结构类似于
+----+--------+-------------+-----------+-----------+
| id | author | content | author_id | liked_by |
+----+--------+-------------+-----------+-----------+
| 1 | 1 | lorem ipsum | 1 | {1, 2, 3} |
+----+--------+-------------+-----------+-----------+
用户表的结构为
+----+----------+
| id | username |
+----+----------+
| 1 | John Doe |
+----+----------+
我该怎么做呢?
【问题讨论】:
-
从这里:
FROM public.posts AS posts, public.users删除:, public.users -
@OtoShavadze 这只是将错误切换到
users表。作为参考,我将其更改为 FROM public.posts AS posts LEFT JOIN users u ON users.id = ANY (posts.likedby) -
@a_horse_with_no_name 我的查询基于另一个查询,用于从用户表中获取作者数据以及作者列值以及帖子数据
-
请edit您的问题并添加一些sample data 和基于该数据的预期输出。 Formatted text 请no screen shots。 (edit 您的问题 - 在 cmets 中不邮政编码或其他信息)
-
问题已经用示例数据和理想的输出进行了编辑。
标签: sql postgresql join