【发布时间】:2012-10-03 11:36:13
【问题描述】:
所以我发现这个很有用:
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
这里是SqlFiddle
所以基本上似乎在ORDER BY 发生之前评估了行号。我需要 ORDER BY 在行后发生。
我怎样才能做到这一点?
【问题讨论】:
标签: mysql sql-order-by