所以我觉得这很有用:
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做了什么让它变得混乱?
THX!
答案 0 :(得分:0)
我需要在给出行之后进行ORDER BY。
然后试试这个:
SELECT *
FROM
(
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
) t
ORDER BY ROW ASC