获取用户消息列表的SQL

博主分享了在开发即时应用时遇到的挑战,主要涉及如何通过SQL查询获取用户的消息列表。文中提供了从用户表和聊天表进行联查的SQL语句,包括两个子查询的联合,并按时间排序。查询条件是用户账号和消息状态,最终结果按创建时间降序排列。
摘要由CSDN通过智能技术生成

最近尝试写一个即时应用时候 在获取用户的消息列表时候犯了难,以为平常都是写前端的。对数据库也并不是很熟悉(后悔大学时候没有好好学sql呜呜)。
翻遍了全网 终于找到了一篇博客 之后慢慢摸索也算写出来了

主要是两张表 一张用户表 一张消息表
用户表(tb_user)
在这里插入图片描述

聊天表(tb_chat_record)
在这里插入图片描述

SQL语句如下 供借鉴(大佬手下留情是真不会sql啊 能写出来我已经很高兴了,轻轻蹂躏我)

SELECT * from tb_user AS us INNER JOIN
(SELECT lxr,send_user_account,message_count,create_time,receipt_user_account,message_status,message_type,has_delete FROM (
		SELECT d.receipt_user_account as lxr,d.* from tb_chat_record d 
    	WHERE (d.send_user_account='YY_VdM9jBXyz') AND (d.receipt_user_account = 'YY_VdM9jBXyz') 
   	UNION
		SELECT e.send_user_account as lxr,e.* from tb_chat_record e
		where(e.send_user_account<>'YY_VdM9jBXyz') AND (e.receipt_user_account = 'YY_VdM9jBXyz')
		ORDER BY create_time DESC
) AS f WHERE message_status = 0
GROUP BY lxr,send_user_account,message_count,create_time,receipt_user_account,message_type,has_delete
ORDER BY MAX(create_time) DESC)AS mes WHERE us.user_account= mes.lxr

查询结果
在这里插入图片描述

顺便粘贴一下借鉴的地方 链接https://blog.csdn.net/bingshuining/article/details/25489359

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值