2012-10-03 57 views
0

可能重複:
Need a sequence number for every row in MySQL query極品行的序列號查詢

所以我發現了這個偉大的使用:

SELECT (@row:[email protected]+1) AS ROW, ID 
FROM TableA ,(SELECT @row := 0) r 
ORDER BY ID DESC 

我的表看起來更像是這樣的:

SELECT (@row:[email protected]+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

我需要ORDER BY發生後給出的行。

那就試試這個:

SELECT * 
FROM 
(
    SELECT (@row:[email protected]+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