可能重复:
MySQL 查询中的每一行都需要一个序列号
所以我发现这个很有用:
SELECT (@row:=@row+1) AS ROW, ID
FROM TableA ,(SELECT @row := 0) r
ORDER BY ID DESC
我的表看起来更像这样:
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
,(SELECT @row := 0) r
ORDER BY ID DESC
@row:=@row+1 效果很好,但我得到了按 ID 排序的行。
所以我得到更像这样的东西:
ROW | ID
3 15
2 10
1 2
我追求的是:
ROW | ID
1 15
2 10
3 2
注意:我注意到if I remove the JOINs I DO get the requested result
(其中ROW
是每行的序号,无论 ID 的 ORDER BY 是什么)
基本上似乎在 ORDER BY 发生之前评估了行号。我需要在给出行后进行 ORDER BY。
关于我如何实现这一目标的任何想法,以及 JOINS 做了什么弄乱了它?
谢谢!