订购和分组mysql

Posted

技术标签:

【中文标题】订购和分组mysql【英文标题】:order and group mysql 【发布时间】:2018-11-03 04:55:46 【问题描述】:

我是查询mysql的初学者

我有这样的表格行和值

enter image description here

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

enter image description here

请任何人帮助我..

我已经这样放了

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

但是错了

谢谢

【问题讨论】:

你应该使用group by和聚合函数,参考dev.mysql.com/doc/refman/8.0/en/group-by-handling.html @Defr - 您的结果图像似乎与您所写的内容不匹配。 使用 sqlfiddle.com 展示你的结果集 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

试试下面的查询

select phone, text from messages group by phone order by id DESC

【讨论】:

因为文本不是聚合函数,所以运行时会报错。 我在哪里写了文本作为聚合函数? 我的意思是应该像电话一样按子句分组 @RajatJaiswal - 出于什么目的?有问题的是,它提到结果应该是电话分组。如果我没看错:)【参考方案3】:

它不适用于 group by 而不是这个 try 下面的查询

SELECT text,phone
FROM @tblPhone tmp
WHERE id = (SELECT MAX(Id) FROM @tblPhone tmp1 WHERE tmp1.PHONE = tmp.Phone)
ORDER BY Id desc

【讨论】:

以上是关于订购和分组mysql的主要内容,如果未能解决你的问题,请参考以下文章

哪些字段应该一起索引?通过...分组?订购?

按段分组报表制作

分组依据、IFNULL 和按日期排序

MySQL笔记--MySQL分组函数和分组查询

mysql进阶5:分组查询

mySQL分组排序