我有两个表:1. 聊天(包含聊天的开始日期),2. 消息(包含聊天消息的发送日期)。
聊天:
id, start_date
1, 2015-06-01
2, 2014-06-01
3, 2013-06-01
消息:
id, message, sent_on, chat_id
1, messag1, 2015-05-01, 1
2, messag2, 2015-04-01, 1
3, messag3, 2015-03-01, 1
4, messag4, 2015-02-01, 1
5, messag5, 2014-06-01, 2
6, messag6, 2014-06-01, 2
7, messag7, 2014-06-01, 2
8, messag8, 2014-06-01, 2
9, messag9, 2013-04-01, 3
10, messag10, 2013-03-01, 3
11, messag11, 2013-02-01, 3
12, messag12, 2013-01-01, 3
问题在于,chat_id = 1 和 3 的消息记录的 sent_on
日期早于 chats.id 等于 1 和 chats.id 等于 3 的日期。
我们如何更新chats.id 1的chats
表设置start_date等于chat_id 1(在本例中为2015-02-01)和chats.id 3消息中的最早日期chat_id 3 的消息的最早日期(在本例中等于 2013-01-01)?
最佳答案
我们可以尝试对子查询进行更新联接,该子查询在 messages
表中查找每个聊天的最早日期:
UPDATE chats c
INNER JOIN
(
SELECT chat_id, MIN(sent_on) AS min_sent_on
FROM messages
GROUP BY chat_id
) m
ON c.id = m.chat_id
SET
c.start_date = m.min_sent_on;
关于mysql - 如何更新发送日期早于聊天开始的聊天消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56408558/