だから私はこの素晴らしい使用法を見つけました:
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
注: ( IDのORDER BYに関係なく、各行の連続番号はif I remove the JOINs I DO get the requested result
どれですか)
に気づきました。ROW
最初の例はうまく機能しますが、一部の理由では、JOINが何らかの形でそれを台無しにします。
だから私はこれを手に入れます:
ROW | ID
3 15
2 10
1 2
私が求めているのは:
ROW | ID
1 15
2 10
3 2
これがSqlFiddleです
したがって、基本的に、行番号は実行される前に評価されるようですORDER BY
。ORDER BY
行が与えられた後に行う必要があります。
どうすればそれを達成できますか?