2015-10-20 40 views
5

我有mysql表Vegetables與字段priceunit。單位可以是12,這意味着千克(1)或噸(2)。它是單位重量。價格取決於單元,所以與price=200unit=1小於price=20unit=2,因爲1噸=千公斤如何sql查詢依賴於行中的字段?

Q:我喜歡... ORDER BY 'price' ACS查詢。如何通過price訂購取決於unit同一個表的字段? 只是不知道該怎麼做..

在的話就好似... ORDER BY {if(this.unit==1):price;else:price*1000} ACS

我使用yii2這個項目:Vegetable::find()->addOrderBy('price asc');

+0

發佈您的代碼片段 – Alex

回答

6
SELECT * 
FROM Vegetables 
ORDER BY IF(unit=1,price,price*1000) ACS 
+1

或'ORDER BY價格* POWER(1000,unit-1)',更符合ANSI標準的替代方案是'ORDER BY price * CASE WHEN unit = 1 THEN 1 ELSE 1000 END' – spencer7593