Besoin d'un numéro de séquence pour chaque ligne de requête MySQL

J'ai donc trouvé cette grande utilisation:

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

La @row:=@row+1 fonctionne très bien, mais j'obtiens la ligne commandé par l'ID.

Mes tables ressembler à ceci:

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

Remarque:
J'ai remarqué que if I remove the JOINs I DO get the requested result (Dans Lequel ROW est le numéro d'ordre de chaque ligne, peu importe l'ORDRE d'ID). Le premier exemple fonctionne très bien, mais pour certains reaosn, les Jointures louper quelque sorte.

alors je me présente:

ROW  | ID  
3      15  
2      10  
1      2

Ce que je suis après est:

ROW  | ID  
1      15  
2      10  
3      2

Voici la SqlFiddle

Donc, essentiellement, il semble que le numéro de ligne est évaluée avant la ORDER BY prend place. J'ai besoin de la ORDER BY après la ligne a été donné.

Comment puis-je y parvenir?

OriginalL'auteur Ted | 2012-10-03