gpt4 book ai didi

php - 通过用户 ID 选择对话的 SQL 请求

转载 作者:行者123 更新时间:2023-11-29 11:46:09 24 4
gpt4 key购买 nike

我有 4 张 table :

  1. 对话
  2. conversations_users
  3. 消息
  4. 用户

对话结构表是:

  • id(主键)
  • 标题(对话标题)

conversations_users结构表是:

  • id(主键)
  • conversationID(用户所在的对话 ID)
  • userID(与对话 ID 关联的用户)

消息结构表是:

  • id(主键)
  • 消息(消息文本)
  • conversationID(消息所在的对话 ID)
  • senderID(发送消息的用户 ID)
  • 日期(消息的时间戳)

用户结构表是:

  • id(主键)
  • 用户名

我想显示用户的所有对话(标题、最后一条消息和最后一条消息时间戳),因此仅显示用户所在的对话。

如何处理 SQL 请求?我想它会是这样的:

SELECT c.title, m.message, m.date 
FROM conversation c
INNER JOIN conversation_users cu
ON ...
INNER JOIN messages m
ON ...
INNER JOIN users u
ON ...
GROUP BY u.id

最佳答案

select usr.userID,
cvs.title,
msg.message,
times.date
from conversations_users usr
left join conversations cvs on usr.conversationID = cvs.id
left join messages msg on usr.conversationID = msg.conversationID
left join
(select usr.userID,
MAX(msg.date) as date
from conversations_users usr
left join messages msg on usr.conversationID = msg.conversationID
group by usr.userID) times on times.userID= usr.userID and times.date=msg.date

关于php - 通过用户 ID 选择对话的 SQL 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34913828/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com