有一产品表,字段为产品名称,产品厂家,发布时间。
需求是:将整个表的记录排序并列出所有记录,排序规则为按表中所有产品厂家,每个厂家选最新的三个产品放在前面(这三个产品同时按最新发布的在前面),剩下的产品按发布时间倒序排列。例如:有三个厂家,分别为A,B,C。A有10个商品,B厂家有6个商品,C厂家有4个商品。取得A发布的最新三个商品+B发布的最新三个商品+C最新发布的三个商品放在前面(这一共9条数据是不按公司名称排序的,只按发布时间倒序排列),剩下的数据就按照发布时间倒序排列排在后面

解决方案 »

  1.   

    仔细想了一下,感觉一句sql挺难的。难道不能用存储过程或者代码实现?
      

  2.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式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)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  3.   

    参考下贴中的多种方法http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
    [征集]分组取最大N条记录方法征集,及散分....
      

  4.   

    难道还不清楚?有一产品表,字段为产品名称,产品厂家,发布时间。
    mysql:5.0.45-community-nt
      

  5.   

    来个效率低得
    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
      

  6.   


    贴建表及插入记录的SQL,及要求结果出来看看