php - 如何过滤 mysql 查询结果我正在创建聊天应用程序我需要基于登录用户的最后一条消息结果
问题描述
如果他/她发送或接收到任何人,我需要登录用户所有最后的消息
SELECT chat.id, chat.sender_id,chat.receiver_id,us.user_nicename as sender_name, u.user_nicename as reciver_name,(SELECT v.message FROM wp_vendor_customer_chat as v where v.id=MAX(chat.id)) as message,chat.sent_date
FROM wp_vendor_customer_chat as chat
left join wp_users us on chat.sender_id = us.id
left join wp_users u on chat.receiver_id = u.id
WHERE receiver_id=1 OR sender_id=1
GROUP BY chat.sender_id, chat.receiver_id
['sqlquery']https://hagglerplanet.jkssoftsolutions.com/wp-content/uploads/2019/02/Untitled.png
解决方案
我找到了解决我的问题的方法。
SELECT wp_vendor_customer_chat.*,us.user_nicename as sender_name, u.user_nicename as reciver_name FROM wp_vendor_customer_chat
left join wp_users us on wp_vendor_customer_chat.sender_id = us.id
left join wp_users u on wp_vendor_customer_chat.receiver_id = u.id
WHERE wp_vendor_customer_chat.id IN (
SELECT MAX(id) AS last_msg_id
FROM wp_vendor_customer_chat WHERE `receiver_id` = ".$vendor_id." OR `sender_id` = ".$vendor_id."
GROUP BY IF(`sender_id` =".$vendor_id.", `receiver_id`, `sender_id`)
)
我已经发布了解决方案,因为如果有人面临同样的问题
推荐阅读
- docusignapi - Docusign iframe 未加载
- yocto - Yocto:找不到工具链,请设置ARCH_arm64_TOOLCHAIN_PREFIX
- swift - 如何在 Swift 中的 IF 语句中设置时间延迟?
- c# - 在 Blazor 服务器应用程序上为移动和桌面设备加载不同的布局组件
- r - 闪亮:滑块输入,观察多个事件和不同的默认值
- powershell - 在 PowerShell 中使用标头将文本文件溢出到 tsv UTF-8
- spring-data-jpa - 按 Spring Data JPA 中的计算值排序
- java - 与 Spring-Data-Rest 和 Querydsl 的默认绑定
- javascript - 快照因 --watchAll=true 而失败,但不是 --watchAll=false
- python - 如何在“DataFrameGroupBy”中调用“MultiIndex”中的索引