sql - 在字符串列上使用 GROUP BY 时未获得分组结果
问题描述
我有一个收件箱表,我想在其中返回按他们的电话号码分组的消息(如发件人的 GMail 组)。并且 sms_content 应该是 id 的最后一条消息。但是当我使用 GROUP BY 关键字时,它不会返回分组结果。
这是我的“收件箱”表。应该对来自号码“+123456789”的 2 条消息进行分组。
+----+--------------+------------------------------+
| id | phone_number | sms_content |
+----+--------------+------------------------------+
| 1 | +123456789 | Hello, my name is |
| 2 | +987654321 | What's up, long time no see! |
| 3 | +123456789 | John, I want to meet you! |
+----+--------------+------------------------------+
我的第一个查询失败并出现此错误消息
select * from inbox group by phone_number
错误:查询错误:错误:列“inbox.id”必须出现在 GROUP BY 子句中或在聚合函数中使用
我尝试的第二个查询没有返回按电话号码分组的结果
select *
from inbox
group by phone_number, id, sms_content
order by id desc
结果(未分组):
+----+--------------+------------------------------+
| id | phone_number | sms_content |
+----+--------------+------------------------------+
| 3 | +123456789 | John, I want to meet you! |
| 2 | +987654321 | What's up, long time no see! |
| 1 | +123456789 | Hello, my name is |
+----+--------------+------------------------------+
我希望看到的结果是这样的。电话号码字段应分组,sms_content 应显示该电话号码的最新 sms_content。
+--------------+------------------------------+
| phone_number | sms_content |
+--------------+------------------------------+
| +123456789 | John, I want to meet you! |
| +987654321 | What's up, long time no see! |
+--------------+------------------------------+
解决方案
推荐阅读
- java - 如何添加新玩家?
- node.js - EACCES:通过 Microsoft Azure 部署 node.js Web 应用程序时权限被拒绝
- reactjs - 使用 Apollo 和 Graphql(serius 项目)为 Reacjs 提供一些架构建议?
- c# - 使用 WMI 列出映射的网络驱动器
- neural-network - 使用 ReLU 进行反向传播 - 理解计算
- julia - 语法“|>”在 Julia 中有什么作用?
- corda - 构建 Corda 示例项目时出现 log4j 错误
- javascript - 如何在 Firebase Firestore 完成之前暂停 Javascript MAP?Promise、Async/Await 或两者兼有
- node.js - 如何在没有守卫装饰器的情况下始终验证 JWT?(Nest.js + 护照)
- java - h2 在处理 qnap 服务器上的许多文件的 h2 上用完文件描述符