PHP,mysql会话列表获取聊天记录最后一条以及未读消息条数

原创
2021/05/15 21:03
阅读数 151

网上看到的。做个记录。

mysql查询会话列表,每条记录包含以下字段:

未读消息条数,

最后一条消息内容

发送时间

朋友id

朋友昵称

select t.*,m.nickname,m.avatar from
(
 
SELECT
	sum( read_status ) AS unread,
	receiver,
	type,
	content,
	send_time
FROM
	(
	SELECT
		to_user_id AS receiver,
		type,
		content,
		0 AS read_status,
		send_time 
	FROM
		message 
	WHERE
		 from_user_id = 4 
		AND  to_user_id <> 4 UNION
	SELECT
		from_user_id AS receiver,
		type,
		content,
		read_status,
		send_time 
	FROM
		message 
	WHERE
		 from_user_id <> 4  
		AND  to_user_id = 4 
	ORDER BY
		send_time DESC 
	) AS newTable
GROUP BY
	receiver 
ORDER BY
	send_time DESC 
	LIMIT 30 ) as t INNER JOIN member m ON t.receiver = m.id 

 

另一个版本

SELECT sum(read_status) AS unread,receiver,type,content,send_time,m.nickname,m.avatar 
FROM (SELECT to_user_id as receiver,type,content,0 as read_status,send_time FROM message WHERE (from_user_id = $userId) AND (to_user_id <> $userId) 
UNION SELECT from_user_id as receiver,type,content,read_status,send_time FROM message WHERE (from_user_id <> $userId) AND (to_user_id = $userId) 
ORDER BY send_time DESC) as newTable 
INNER JOIN member m on receiver = m.id GROUP BY receiver ORDER BY send_time DESC LIMIT 30

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部