【发布时间】:2019-07-27 09:49:53
【问题描述】:
我有一个收件箱表,我想在其中返回按电话号码分组的消息(例如按发件人分组的 GMail 组)。并且 sms_content 应该是 id 的最后一条消息。但是当我使用 GROUP BY 关键字时,它不会返回分组结果。
这是我的“收件箱”表。有 2 条来自号码“+123456789”的消息应该被分组。
+----+--------------+------------------------------+
| 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! |
+--------------+------------------------------+
【问题讨论】:
标签: sql postgresql