解决mysql group by不能排序方法

常用的方法

 代码如下 复制代码
select * from table group by column_name order by id desc

 是不能得到每个分组里面的id的最大的值的

解决方法:

有人写出下面的语句:

 代码如下 复制代码

SELECT *,max(dateline) as max_line FROM posts GROUP BY  tid ORDER BY dateline DESC LIMIT 10

这条语句的没错是选出了最大发布时间,但是你可以对比一下 dateline 和 max_dateline 并不相等!(可能有相当

的情况,就是分组的目标记录只有一条的时候!)

正确的办法是:

 代码如下 复制代码

SELECT *,max(dateline) as max_line FROM posts GROUP BY  tid HAVING dateline=max(dateline)ORDER BY

dateline DESC LIMIT 10

select * from (select * from table order by id desc ) t group by column_name order by id desc

这样就

会得到每个分组里面最大的id值了,并且最后的 order by id desc 是再对这些得到的id的值进行排序

时间: 2024-11-09 05:51:26

解决mysql group by不能排序方法的相关文章

mysql group by 先排序与分组同时使用方法

本教程今天要讲述一下关于,困扰使用mysql教程数据库教程的朋友的一个常见的问题,mysql group by 先排序与分组同时使用方法,下面看实例. 看排序 select * from (select * from posts order by dateline desc) group by  tid order by dateline desc limit 10 这样效率应该高点.取消了order   by   的filesort过程. select   *   from   t   whe

MYSQL的binary解决mysql数据大小写敏感问题的方法_Mysql

复制代码 代码如下: mysql> select binary 'ABCD'='abcd' COM1, 'ABCD'='abcd' COM2;+--------+-----------+| COM1 | COM2 |+--------+-----------+|      0     |      1      |+---------+-----------+1 row in set (0.00 sec) (仅仅有些而已!4.*以前)因为有的MySQL特别是4.*以前的对于中文检索会有不准确的问

解决MySQL无法远程连接的方法_Mysql

MySql远程连接无法打开解决办法 1.改表法. 请使用mysql管理工具,如:SQLyog Enterprise.navicate mysql 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑使用mysql管理工具登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%" 2. 授权法.

解决mysql远程链接1130错误方法介绍

错误提示 错误代码是1130,ERROR 1130: Host 10.0.0.1  is not allowed to connect to this MySQL server 解决办法 无法给远程连接的用户权限问题. 结果这样子操作mysql库,即可解决. 在本机登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称'%'..  代码如下 复制代码 mysql

解决MySQL Workbench gnome-keyring-daemon错误的方法分享_Mysql

在Fedora下安装了一个MySQL Workbench,运行,连接数据库,在Store in Keychain时出现了gnome-keyring-daemon错误,不能保存密码,也就连不上数据库. 解决的办法是编辑/usr/bin/mysql-workbench, 将# WB_NO_GNOME_KEYRING=1改成export WB_NO_GNOME_KEYRING=1, 保存并重新运行mysql-workbench,就可以保存密码并连接数据库了.

MySQL IN 条件语句 排序方法

有个场景,一个几万条记录的表,主键是 id,我想从表中取 id 为 30,20,80,40 的几条记录. 注意,30,20,80,40,是我预期的顺序,我希望 MySQL 按这样的顺序返回记录. 于是我这样写 SQL:  代码如下 复制代码 SELECT * FROM my_table WHERE id IN (30, 20, 80, 40); 结果是,他没有按我给的顺序返回. 怎么办? 查到了 FIELD() 函数.  代码如下 复制代码 FIELD(str,str1,str2,str3,-)

解决Mysql连接过多错误的方法

  1.数据库系统允许的最大可连接数max_connections.这个参数是可以设置的.如果不设置,默认是100.最大是16384. 2.数据库当前的连接线程数threads_connected.这是动态变化的. 查看max_connections.max_connections的办法见后. 如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝,如果程序没做太多的错误处理,就会

解决MySQL忘记密码问题的方法_Android

为大家提供的MySQL忘记密码的解决方案,供大家参考,具体内容如下 1.在操作系统windows操作系统,xp或win7.中进入如下目录: 复制代码 代码如下: C:\Users\Administrator>cd C:\Program Files\MySQL\MySQL Server 5.5\bin 2.停止MySQL服务 C:\Program Files\MySQL\MySQL Server 5.5\bin>net stop mysql //MySQL 服务正在停止. //MySQL 服务已

解决MySQL忘记密码问题的方法

为大家提供的MySQL忘记密码的解决方案,供大家参考,具体内容如下 1.在操作系统windows操作系统,xp或win7.中进入如下目录: 复制代码 代码如下:C:\Users\Administrator>cd C:\Program Files\MySQL\MySQL Server 5.5\bin 2.停止MySQL服务 C:\Program Files\MySQL\MySQL Server 5.5\bin>net stop mysql //MySQL 服务正在停止. //MySQL 服务已成