有一产品表,字段为产品名称,产品厂家,发布时间。
需求是:将整个表的记录排序并列出所有记录,排序规则为按表中所有产品厂家,每个厂家选最新的三个产品放在前面(这三个产品同时按最新发布的在前面),剩下的产品按发布时间倒序排列。例如:有三个厂家,分别为A,B,C。A有10个商品,B厂家有6个商品,C厂家有4个商品。取得A发布的最新三个商品+B发布的最新三个商品+C最新发布的三个商品放在前面(这一共9条数据是不按公司名称排序的,只按发布时间倒序排列),剩下的数据就按照发布时间倒序排列排在后面
需求是:将整个表的记录排序并列出所有记录,排序规则为按表中所有产品厂家,每个厂家选最新的三个产品放在前面(这三个产品同时按最新发布的在前面),剩下的产品按发布时间倒序排列。例如:有三个厂家,分别为A,B,C。A有10个商品,B厂家有6个商品,C厂家有4个商品。取得A发布的最新三个商品+B发布的最新三个商品+C最新发布的三个商品放在前面(这一共9条数据是不按公司名称排序的,只按发布时间倒序排列),剩下的数据就按照发布时间倒序排列排在后面
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
[征集]分组取最大N条记录方法征集,及散分....
mysql:5.0.45-community-nt
select * from tb where 产品名称=A order by 发布时间 desc limit 3
union all
select * from tb where 产品名称=B order by 发布时间 desc limit 3
union all
select * from tb where 产品名称='C' order by 发布时间 desc limit 3
union all
select * from tb where 产品名称=A order by 发布时间 desc limit 4,10
union all
select * from tb where 产品名称=B order by 发布时间 desc limit 4,6
union all
select * from tb where 产品名称='C' order by 发布时间 desc limit 4,6
贴建表及插入记录的SQL,及要求结果出来看看