用法:group by 是根据指定的列进行分组,对每个组取第一条数据,所以,对问题:一个作者发布了很多文章,要展示不同作者的一篇文章所以用了 group by auth 的SQL语句。但是发现展示出来的文章并不是作者最新的文章。

如果使用 select * from test group by category_id order by `date` 语句就会出现错误。

正确用法是: select * from (select * from `test` order by `date` desc) `temp`  group by category_id order by `date` desc

select * from (select * from 'test' order by 'date' desc) 'temp' group by category_id order by 'date' desc

多条件分析:

例如:一个表

mysql----group by,limit的用法的两个条件分析

当使用group by 安装c列分组时: select count(a),c from test group by c

mysql----group by,limit的用法的两个条件分析

当按照 b c两个条件来分组: select count(a),b,c from test group by b,c 

mysql----group by,limit的用法的两个条件分析

当按照 c,d两个条件来分组: select count(a),b,c from test group by c,b 

mysql----group by,limit的用法的两个条件分析

可以看出 group by 两个条件的工作过程: 先对第一个条件b列的值 进行分组,分为 第一组:1-5, 第二组6-8,然后又对已经存在的两个分组用条件二 c列的值进行分组,发现第一组又可以分为两组 1-4,5 

limit 用法:

查询语言:select * from table limit [offset] rows|rows

 当省略offset的时候,offset作为0处理,表示提取查询到的前rows条数据;

 当offset>=0时候,表示提取查询到的从offset开始的rows条数据;此时如果rows<0表示提取查询到的从offset开始的所有数据

 当offset<0的时候,表示提取查询到的除出后rows条数据的所有数据,即剔除last row-rows到last rows之间的-rows条数据

 另外,如果rows大于实际查询的数据条数,则取rows为实际查询的数据条数。

实例:

检索记录行6-15行 :select * from table limit 5,10

检索记录行96-last: select * from table limit 95,-1

检索前5个记录行: select * from table limit 5

 

 

相关文章:

  • 2021-06-12
  • 2022-12-23
  • 2021-07-10
  • 2021-08-26
  • 2021-07-06
  • 2021-12-01
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-04
  • 2021-09-11
  • 2022-12-23
相关资源
相似解决方案