我有一个750辆车的数据库,我想运行一个查询,我为每个品牌选择不超过5辆最便宜的车辆。模型并包括我的结果中的那些。
我的表字段是fldYear,fldMake,fldModel,fldRetail等。
例如,我希望输出包含5个最便宜的道奇200车辆,总共25辆,5个最便宜的本田雅阁,总共30个,5个最便宜的Jeep Cherokees,总共10个,如果只有2个Volkswagon Jettas ,也包括它们。在上面的例子中,我的输出总共有17条记录。
我玩过Sorts和Group By,但我似乎无法获得所需的输出。
答案 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个最便宜的车辆并将其放入阵列或物体中。对于其他品牌也是如此,在检索完所有必需数据后,您可以将它们合并到新阵列中。