2011-12-06 8 views
2
SELECT @row := @row + 1 AS row, t.* 
FROM some_table t, (SELECT @row := 0) r 
ORDER BY t.title 

テーブルから行を数値化し、ORDER BYでソートするとします。ORDER BYで行に番号を付ける

ORDER BYを使用すると、ユーザ変数@rowORDER BYのため1,2,3ではありません。 ORDER BYで行を選択するにはどうすればいいですか?

答えて

1
select @row := @row + 1 as row,t.* from (
select * from some_table,(select @row:=0) as r order by title) as t 
3
SELECT @rank:[email protected]+1 rank FROM some_table t, (SELECT @rank:=0) r order by @rank 

または

発注、他のフィールドによって

SELECT @rank:[email protected]+1 rank FROM some_table t, (SELECT @rank:=0) r order by id desc 
+0

+1私よりも良い:) –

0

あなたRANKEDプリ返す結果セットの最初の必要性、それ

SELECT @row := @row + 1 AS row, 
     PreQuery.* 
    FROM 
     (select t.* 
      from Some_Table t 
      order by t.title) PreQuery, 
     (SELECT @row := 0) r 
に行番号を割り当てます

この方法では、基本的にテーブルを2回実行します。まず、適切な順序でレコードを取得し、それらを@row実装に適用して、それぞれのランクに適切に相関させます。

関連する問題