Mysql查询5个最便宜的车,多个制作,从单表

时间:2017-08-15 14:16:23

标签: mysql sql greatest-n-per-group

我有一个750辆车的数据库,我想运行一个查询,我为每个品牌选择不超过5辆最便宜的车辆。模型并包括我的结果中的那些。

我的表字段是fldYear,fldMake,fldModel,fldRetail等。

例如,我希望输出包含5个最便宜的道奇200车辆,总共25辆,5个最便宜的本田雅阁,总共30个,5个最便宜的Jeep Cherokees,总共10个,如果只有2个Volkswagon Jettas ,也包括它们。在上面的例子中,我的输出总共有17条记录。

我玩过Sorts和Group By,但我似乎无法获得所需的输出。

2 个答案:

答案 0 :(得分:1)

只需使用变量:

SELECT *
FROM (
     SELECT *,
            @row := if(fldMake = @make,
                       @row := @row + 1,
                       if(fldMake := @make, 1, 1)
                      ) as row
     FROM yourCars
     CROSS JOIN ( SELECT @make := '', @row:=0 ) as vars
     ORDER BY fldMake, fldRetail ASC
     ) as T
WHERE T.row <= 5

答案 1 :(得分:1)

我认为你应该从一个品牌中找回5个最便宜的车辆并将其放入阵列或物体中。对于其他品牌也是如此,在检索完所有必需数据后,您可以将它们合并到新阵列中。