我已经有一段时间没有解决这个问题了。
我有一个类似如下的数据库:
Car_ID Car_Brand Car_Model Car_Price
1 Ford Fiesta 4000
2 Ford Mustang 29000
3 Ford Focus 12000
4 Honda Civic 15000
6 Honda Jazz 5000
7 Toyota Prius 14000我想执行一个搜索,找到最便宜的汽车,然后按价格升序订购相同品牌的其余汽车。
我希望我的输出是:
Car_ID Car_Brand Car_Model Car_Price
1 Ford Fiesta 4000
3 Ford Focus 12000
2 Ford Mustang 29000
6 Honda Jazz 5000
4 Honda Civic 15000
7 Toyota Prius 14000最便宜的车是福特嘉年华,所以其他福特车型都是直接按价格订购的。然后,本田拥有第二便宜的车型,因此爵士和其他本田紧随其后,以此类推。
这个是可能的吗?
发布于 2011-09-29 10:35:08
您需要做的是创建一个包含car_brand和该品牌的最低价格(我称之为brand_price)的临时数据集,然后将该数据连接回原始的cars表。这将为您提供排序数据所需的附加信息(brand_price):
SELECT car_id, car_brand, car_model, price FROM cars C1
JOIN (select car_brand, MIN(price) AS brand_price FROM cars GROUP BY car_brand) C2
ON C1.car_brand = C2.car_brand
ORDER BY C2.brand_price, C1.car_brand, C1.price发布于 2011-09-29 10:33:59
像这样的东西应该是有效的:
SELECT a.*
FROM Cars a
LEFT JOIN (
SELECT Car_Brand, MIN(Car_Price) AS MinPrice
FROM Cars
GROUP BY Car_Brand
) b ON a.Car_Brand = b.Car_Brand
ORDER BY b.MinPrice, a.Car_Price发布于 2011-09-29 10:32:12
我会按最小价格进行Car_Brand分组,然后按排序后的car_brand和价格进行连接。我将查看是否可以为此完成查询。
https://stackoverflow.com/questions/7591784
复制相似问题