mysql - 排序和分组 mysql

标签 mysql select greatest-n-per-group

我是查询mysql的初学者

我有这样的表行和值

enter image description here

我想从表中选择:按 ID 降序排序并按电话分组 所以结果会是这样

enter image description here

请任何人帮助我..

我已经这样写了

select * from messages where 1 group by phone order by ID desc

但这是错误的

谢谢

最佳答案

要获取每个电话属性的最新消息,您可以使用自连接

select a.*
from messages a
join (
    select phone, max(id) id
    from messages
    group by phone
) b on a.phone = b.phone and a.id = b.id

或者使用左连接

select a.*
from messages a
left join messages b on a.phone = b.phone and a.id < b.id
where b.phone is null

关于mysql - 排序和分组 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50501282/

相关文章:

sql - 获取每个组的下一个最小值,大于或等于给定值

php - mysql不允许在唯一索引上使用NULL

mysql - 如何执行 UPSERT 以便我可以在更新部分同时使用新值和旧值

php - MySQL 查询输出的决策

mysql - 更新时阻止 MySQL 读取

mysql - Sql 选择至少设置过一次列的位置

php - 如何使用 php mysql 从 get user_timeline twitter 多行更新数据库

mysql - substring_index 不采用精确的前缀

sql - 获取具有 max(timestamp) 的行

php - mysql 根据连接查询和最新日期时间获取所有行