ORDER BY 零值排序不同
ORDER BY with zero values ordered differently
我想添加一个名为RowNum 的临时列(已成功获取)。
但我的问题是我希望我的数据在我的列 'Moyenne' 中以 > 或 < 结尾的零值排序。
我不能在最后一个 ORDER BY 中写它,因为我想要我的 table 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
这是我的 table 日记:
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。
您希望值 0
表现得好像它是一个大数字。
所以替换
... AND t2.Moyenne < t1.Moyenne
用 CASE expressions 将 0
映射到不同的值:
... AND CASE t2.Moyenne WHEN 0 THEN 'last' ELSE t2.Moyenne END
< CASE t1.Moyenne WHEN 0 THEN 'last' ELSE t1.Moyenne END
(在 SQLite 中,数字比任何字符串都小。)
我想添加一个名为RowNum 的临时列(已成功获取)。 但我的问题是我希望我的数据在我的列 'Moyenne' 中以 > 或 < 结尾的零值排序。 我不能在最后一个 ORDER BY 中写它,因为我想要我的 table 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
这是我的 table 日记:
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。
您希望值 0
表现得好像它是一个大数字。
所以替换
... AND t2.Moyenne < t1.Moyenne
用 CASE expressions 将 0
映射到不同的值:
... AND CASE t2.Moyenne WHEN 0 THEN 'last' ELSE t2.Moyenne END
< CASE t1.Moyenne WHEN 0 THEN 'last' ELSE t1.Moyenne END
(在 SQLite 中,数字比任何字符串都小。)