我是一名SQL新手,正在尝试编写以下查询:
我有下表:
user_id | chat_id
---------+---------
这代表了用户到聊天室的多对多映射;
我希望创建一个查询来查找所有
chat_id
与输入相关的s
user_id
,然后数组聚合所有
user_id
s与除输入之外的聊天记录相关联
user_id
.
因此,结果应该看起来像这样,例如:
chat_id | user_id
---------+---------
1 {1,3,5,6}
我对以下问题有些困惑;但我很确定我做错了什么:
WITH chatIDs AS (SELECT user_chats.chat_id FROM user_chats WHERE user_chats.user_id=$1)
WITH userIDs AS (SELECT user_chats.user_id FROM user_chats WHERE user_chats.chat_id=chatIDs AND user_chats.user_id != $1)
SELECT chatIDs, array_agg(userIDs) FROM user_chats;
编辑:
为清晰起见而编辑