php - 无法按照最新的聊天顺序对成员进行排序

标签 php mysql

我有一个要求,我必须根据未读消息和最新对话明智地从聊天表中订购用户。

我的表结构如下:

编号 |来自_member_id | to_member_id |添加时间 |留言 |已查看

这里的from_member_id 和to_member_id 是member 表的主键。 message 是相互发送的消息,is_vied 是一个标志,表示消息是否被接收者或 to_member_id 查看。所以,我现在有一个 member_id,我必须将它与两列匹配,但我希望结果应该根据未读消息排序,然后是未读消息。

我正在使用这个查询

  SELECT `from_member_id`
       , `to_member_id`
       , MAX(`added_time`) AS latest
       , `is_viewed`
    FROM `wp_doc_profile_message`
   WHERE `from_member_id` = 3
GROUP BY `from_member_id`
ORDER BY `is_viewed` ASC, `latest` DESC 

它没有给我想要的结果。请帮忙。

最佳答案

在这里您可以将 to_member_id 与 OR 运算符和 group by id 消息表 id 匹配,这样记录就不会重复

SELECT `from_member_id`,`to_member_id`,max(added_time) as latest,`is_viewed` FROM
 wp_doc_profile_message WHERE  from_member_id = 3  OR to_member_id=3 
 group by `id`
 ORDER BY is_viewed ASC, latest DESC

SELECT pm.`from_member_id`,pm.`to_member_id`,max(pm.added_time) as latest,pm.`is_viewed` FROM
 wp_doc_profile_message  pm
LEFT JOIN members m ON (m.id=pm.`from_member_id` OR m.id=pm.`to_member_id` )

 group by pm.`id`
 ORDER BY pm.is_viewed ASC, latest DESC

关于php - 无法按照最新的聊天顺序对成员进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17925368/

相关文章:

php - 表数据行显示 0 而不是来自 mysql 的数据?

jquery - Ajax请求 'overlapping'

php - Cron 作业执行 php 文件

mysql - 在 MySQL 中执行 MINUS 操作不起作用

php - 未签名的 int 到 php 中的签名

javascript - HTML 链接,其中包含页面构建信息

php - 将参数传递给路由: Missing required parameters for [Route: post] error

php - 使用 AJAX 从 SQL 获取信息并放入表中

mysql - 获取按日期分组的最大访问者数量

php - 或者像我的 SQL 查询(使用 CodeIgniter 生成)一样,无法使用 jQuery DataTables