用法: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
多条件分析:
例如:一个表
当使用group by 安装c列分组时: select count(a),c from test group by c
当按照 b c两个条件来分组: select count(a),b,c from test group by b,c
当按照 c,d两个条件来分组: select count(a),b,c from test group by c,b
可以看出 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