订购*其中*

时间:2012-09-04 18:59:33

标签: mysql

抱歉我的英语不是最好的。

是否可以在“order by”中执行“where”。

示例:

ORDER BY 
SUM(points), 
SUM(points) WHERE type = 1, 
SUM(goal), 
SUM(goal) WHERE type = 1

首先,我们按点排序。

如果有人拥有相同数量的SUM(points),那么我们按SUM(points) where type = 1排序。

如果有人拥有相同数量的SUM(points)和相同数量的SUM(points) where type = 1,那么我们会在SUM(goal)之后排序。

如果所有人中都有相同的人,则必须按SUM(goal) where type = 1排序。

2 个答案:

答案 0 :(得分:4)

SUM(CASE WHEN type=1 THEN points ELSE 0 END)

如果你想要“最好的”,你当然应该在所有订单条件中添加DESC;)

sqlFiddle

答案 1 :(得分:0)

ORDER BY
  SUM(points),
  SUM(CASE WHEN type = 1 THEN points ELSE 0 END),
  SUM(goal),
  SUM(CASE WHEN type = 1 THEN goal ELSE 0 END)