SQL Union 语句获取 好友消息列表,最新聊天记录的获取展示

  • 背景
    最近在自己的后台项目中
    为了方便展示好友消息列表数据
    发现,对于最新聊天记录的获取还挺麻烦的
    用到了至少我这几乎没用过的 UNION 语句,在此整理一番 …

  • 首先,鄙人的对话记录表设计字段如下:
    各字段意义一目了然,可作为参考

  • 整理得到的 SQL语句,使用时可替换其中的 当前用户ID 即可
    为了便于阅读,缩进如下:
SELECT count(is_read = 0 or null) AS count_no_read,friend_id,uni_table.content,log_time,type,user_name,picture 
	FROM ( 
			SELECT to_id as friend_id,content,1 as is_read,log_time,type 
				FROM tp5_xchat_logs WHERE (from_id = 1) AND (to_id <> 1) 
			UNION 
			SELECT from_id as friend_id,content,is_read,log_time,type 
				FROM tp5_xchat_logs WHERE (from_id <> 1) AND (to_id = 1) 
			ORDER BY log_time desc 
		 )AS uni_table 
INNER JOIN tp5_xadmins a on friend_id = a.id GROUP BY friend_id ORDER BY log_time DESC;
  • sql 执行结果如下:

  • 根据业务需求,消息列表的效果如下所示:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值