mysql - 我想找出查询哪个 group by 后跟 order by
问题描述
我尝试为应用程序聊天创建数据库。我无法在聊天响应中从客户那里获取最新信息,例如一位客户正在与我交谈。然后第二个客户想和我谈谈。我希望我的客户 ID 位于顶部,以便我可以验证尚未回复的人
我的桌子是消息
+---------------------------+---------------+
| msg_id | outgoing_id | | msg |
+---------------------------+---------------+
| 1 | 511 | | test |
| 2 | 543 | | Hi |
| 3 | 775 | | Hello |
| 4 | 511 | | bye |
| 5 | 543 | | i want to buy |
+---------------------------+---------------+
我有用户查询
select * from messages left join users on tbmsg.outgoin_id = users.unique_id group by waiting_id order by msg_id desc
这给了我结果
msg_id | outgoing_id | msg
1 | 775 | Hello
2 | 543 | Hi
3 | 511 | test
但我想要这样的结果。
msg_id | 传出_id | 味精
1 | 543 | i want to buy
2 | 511 | bye
3 | 775 | Hello
解决方案
SELECT
@rowid := @rowid + 1 AS ROWID,t.*
FROM messages t,
(SELECT @rowid := 0) dummy
WHERE
msg_id IN (select max(msg_id)
from messages
group by outgoing_id) ORDER BY msg_id DESC
我同意您不应该更改结果中的主键的评论,但如果您希望在开头有一个行号,您可以使用此查询。如果您使用的是 Mysql 版本8.0+ ,则可以将其替换为 ROW_NUMBER()
结果 :
ROWID | msg_id | 传出_id | 味精 |
---|---|---|---|
1 | 5 | 543 | 我想买 |
2 | 4 | 511 | 再见 |
3 | 3 | 775 | 你好 |
推荐阅读
- c# - 在 ASP .Net Core 3.0 项目中延迟获取工作线程
- asp.net-core - 如何将 asp-page-handler 动态添加到在 asp.net 核心中标记?
- mongoose - 删除请求有效,但不会从数据库中删除
- flutter - 如何使用颤振从 BottomNavigationBar 获取类似 WhatsApp 的菜单?
- python - Python - 构建一个二维随机整数列表,显示重复,不应该存在
- node.js - 在 Mocha 测试中无法通过 graphql.macro 加载器检索 GraphQL 架构
- mysql - 在 MySQL/MariaDB 的事务中读取提交的数据
- html - 导航(菜单栏)下方的内容流:响应式网站
- javascript - InnerHTML 标记在我的 JavaScript 代码中不起作用
- php - 错误:遇到未捕获的异常