ORDER BY,零值以不同方式排序

时间:2017-11-18 21:14:41

标签: sqlite select sql-order-by

我想添加一个临时列调用RowNum(我已成功获取它)。 但我的问题是我想要订购我的数据>或者<在我的专栏'Moyenne'的最后,零值。 我不能在最后的ORDER BY中写它,因为我想要RowNum的表顺序。

     SELECT 
         (SELECT COUNT(*) FROM orieps AS t2 
    WHERE (t2.Nbparcours > t1.Nbparcours ) 
    OR (t2.Nbparcours = t1.Nbparcours AND t2.Nberreurs < t1.Nberreurs  ) 
    OR (t2.Nbparcours = t1.Nbparcours AND t2.Nberreurs = t1.Nberreurs AND t2.Moyenne < t1.Moyenne  ) ) +1 
AS rowNum, Nom, Nbparcours, Nberreurs, Moyenne, Total , P1, P2, P3, P4, P5 
FROM  orieps t1 
    ORDER BY  RowNum ASC 

这是我的表格orieps:

   Nbparcours|Nberreurs|Moyenne
        1    |    1    |   0
        1    |    1    |  3.5
        2    |    1    |   3

这就是我想要的:

 ROwNum|Nbparcours|Nberreurs|Moyenne
    1  |    2     |    1    |   3
    2  |    1     |    1    |  3.5
    3  |    1     |    1    |   0

Nbparcours的第一顺序,如果相等则由Nberreurs排序,如果相等则由Moyenne排序,但最后为0。

1 个答案:

答案 0 :(得分:0)

您希望值0的行为就像是一个很大的数字。

所以替换

... AND t2.Moyenne < t1.Moyenne

CASE expression0映射到不同的值:

... AND CASE t2.Moyenne WHEN 0 THEN 'last' ELSE t2.Moyenne END
      < CASE t1.Moyenne WHEN 0 THEN 'last' ELSE t1.Moyenne END

(在SQLite中,数字比任何字符串都要小。)