我对订购SQL表有疑问。我无法在堆栈或谷歌上找到解决方案。我的表“得分”如下:
Name Total Tries Game1 Game2 Game3
------------------------------------------
Sam 65 61 10 31 24
Tom 55 11 30
Jim 65 58 9 34 22
Dan 62 52 10 30 22
注意:“总计”列为COUNT(Game1 + Game2 + Game3)。
正如你所看到汤姆的总记录是空的,因为汤姆没有玩Game2。
我想订购我的表如下(最高优先级):
所以我的表必须看起来像:
Name Total Tries Game1 Game2 Game3
------------------------------------------
Dan 62 52 10 30 22
Jim 65 58 9 34 22
Sam 65 61 10 31 24
Tom 55 11 30
我必须使用哪种SQL查询?
这就是我现在所拥有的,但它不会对“尝试”进行排序:
SELECT name, Game1+Game2+Game3 AS Total, Game1, Game2, Game3, Tries
FROM Score
ORDER BY CASE WHEN Tries or Game1 or Game2 or Game3 IS NULL THEN 0 ELSE 1 END DESC,
COALESCE(Game1,0) + COALESCE(Game2,1) + COALESCE(Game3,2) ASC
答案 0 :(得分:0)
根据NULL
中的Total
声明,考虑CASE
中order by
代替空。试试这个Order by
ORDER BY COALESCE(Total,99999999999) ASC,Tries ASC
99999999999
将使NULL
值在末尾排序,其他记录将按升序排序
或
ORDER BY case when Total is null then 0 else 1 end desc,Total ASC,Tries ASC