我试图在一行中获取与它关联的对话列表和与会者,以及给定用户的最后一条消息。我正在寻找的结果是这样的:SQL查询同一行中同一列的多个值
**| conversationId | participants | text | timestamp |**
67 aester,bester Hello 00:00:00
上述模型只是一行。我正在试图获得具有上述结果的所有行。文本列是与该对话关联的最后一条消息。
这里是我的模型:
用户
userId|username|
87 aester
89 cester
96 bester
对话
|conversationId|
67
68
消息
| messageId | text | timestamp | conversation_id | user_id
41 Hello 00:00:00 67 87
42 Hey 00:00:00 68 89
UserConversations
| id | conversation_id | user_id
3 67 87
4 67 96
5 68 89
如何查询上述模型以获得期望的结果?
当前的更新:
SELECT conversations.`conversationId` as conversationId,
GROUP_CONCAT(users.`username`) as participants FROM users
LEFT JOIN user_conversations
ON users.`userId` = user_conversations.`user_id`
LEFT JOIN conversations
ON user_conversations.`conversation_id` =
conversations.`conversationId`
WHERE EXISTS (SELECT * FROM user_conversations WHERE
user_conversations.user_id = 87)
GROUP BY conversations.`conversationId`;
以上是生产这是我想要的只是我无法弄清楚如何让每行也是在最后的消息:
| conversationId | participants |
67 aester,bester
68 cester
检查[** GROUP_CONCAT()**](https://www.w3resource.com/mysql/aggregate-functions-and-grouping/aggregate-functions-and-grouping-group_concat.php) –
我试图使用GROUP_CONCAT,但它返回同一行上的所有参与者,即使它们不属于对话 – samuscarella
向我们显示数据库模式,样本数据,当前和预期输出。 \t请阅读[**如何提问**](http://stackoverflow.com/help/how-to-ask) \t \t这里是一个伟大的地方[** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)来了解如何提高您的问题质量并获得更好的答案。 \t [**如何创建最小,完整和可验证示例**](http://stackoverflow.com/help/mcve) –