这段时间一直遇到麻烦。
我有一个类似这样的数据库:
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
最便宜的车是福特嘉年华,所以其他福特车型按照价格直接订购。本田拥有第二个最便宜的车型,所以爵士乐和其他本田车队都会跟随,等等。
这可能吗?
答案 0 :(得分:10)
您需要做的是创建一个瞬态数据集,其中包含car_brand和该品牌的最低价格(我称之为brand_price),然后将该数据加入原车牌表。这将为您提供排序数据所需的额外信息(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
答案 1 :(得分:2)
这样的事情应该有效:
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
答案 2 :(得分:1)
我会根据最低价格按Car_Brand顺序进行分组,然后按分类的car_brand和价格进行订购。我会看看我是否可以为此完成查询。
答案 3 :(得分:-2)
我认为你可以使用以下查询
来做到这一点SELECT Car_ID, Car_Brand, Car_Model, Car_Price
FROM tblcars
ORDER BY Car_Price, Car_Brand
除非我错过了什么
答案 4 :(得分:-2)
select * from cars order by Car_Price, Car_Brand ASC