所以我发现这个很有用:
SELECT (@row:=@row+1) AS ROW, ID
FROM TableA ,(SELECT @row := 0) r
ORDER BY ID DESC
@row:=@row+1
效果很好,但我得到了按 ID 排序的行。
我的表看起来更像这样:
SELECT (@row:=@row+1) AS ROW, ID , ColA, ColB, ColC
FROM TableA
JOIN TableB on TableB.ID = TableA.ID
JOIN TableC on TableC.ID = TableA.ID
WHERE ID<500
,(SELECT @row := 0) r
ORDER BY ID DESC
注意:
我注意到if I remove the JOINs I DO get the requested result
(其中ROW
是每行的序号,无论 ID 的 ORDER BY 是什么)。第一个示例效果很好,但对于某些原因,JOIN 以某种方式将其搞砸了。
所以我明白了:
ROW | ID
3 15
2 10
1 2
我追求的是:
ROW | ID
1 15
2 10
3 2
所以基本上似乎在ORDER BY
发生之前评估了行号。我需要在ORDER BY
给出行后进行。
我怎样才能做到这一点?