复杂的MySQL“ORDER BY”

时间:2014-05-18 21:25:13

标签: mysql sorting

我有一些大表,其中某些值未正确添加,重新安排所有内容的工作量太大。我基本上需要对“Number”desc进行排序,但如果Type ='Food',则Number应该增加40%。

Name   | Type    | Number
Cheese | Food    | 50
Apple  | Fruit   | 30
Grapes | Berries | 60

所以在伪代码中:

从表顺序中选择*(如果type ='Food',number =(number * 1.4)),number desc

所以列表应该像这样排序:

Name   | Type    | Number
Cheese | Food    | 70
Grapes | Berries | 60
Apple  | Fruit   | 30

这可能吗?

1 个答案:

答案 0 :(得分:2)

您的伪代码几乎完全正确:

Select *
From Table
Order by (case when type = 'Food' then number * 1.4 else number end) desc;

我更喜欢caseif,因为它是标准SQL。