SQLでSELECTする際、結果レコードに1、2、3、4のように順番をカラムに追加する構文ってどうするのでしたか?
LIMITを使えば、例えばソート結果の5番目に該当するレコードを選択表示できますが、その逆でSELECTされたうちの該当レコードが何番目なのかが知りたいのです。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_kj04_2.htm
SQL 問い合わせ - スカラー副問い合わせ、cursor、row_number、over、with - SAK Streets
URLの「row_number」でしょうか。DB2とOracleでは動作確認してます。DBによってはサポートしてないものもあったかもしれません。
Yahoo! JAPAN
URLはダミーです。
例えば、テーブル「test」が
id_no point
----------- -----------
1 50
2 12
3 33
4 45
5 39
6 33
のような場合、
select a.*,
(select count(*)
from (select point
from test
group by point) b
where b.point > a.point) + 1 as rank
from test a
のクエリでランキングが追加できます。
このクエリをFROM句にすれば、該当データのランキングを取得可能です。
ありがとうございます。
あとでじっくり読んで見ます。
http://www.hatena.ne.jp/1100142292
人力検索はてな - すごく初歩的な質問だと思うのですが、答えがでてきません。 SQLでSELECTする際、結果レコードに1、2、3、4のように順番をカラムに追加する構文ってどうするのでしたか..
urlはダミーです
order by 式
です
1の回答者のrow_numberのようなことを
MySQLでやる方法を探しています。
SET @tmp :=0;
SELECT *, @tmp := @tmp +1 AS tmp FROM table;
このようにすれば、
カラム名「tmp」に「1, 2, 3, ・・・」と
番号が振られていきます。
まさしくこれです。
はじめからMySQLと限定して質問すればよかった
かもしれません。
皆さんありがとうございました。
オラクルみたいなrownumではありませんが、
テーブル定義するときに自動でインクリメントしてくれるカラムを定義できます。
アクセスで言うオートナンバーみたいな物です。
テーブル定義してしまうのではなく、様々なSELECT結果での順位というか、番号をつけたかったんです。
皆さんありがとうございました。
MySQLでの使用だったのですが、あえてDBの種類は言及せず質問させていただきましたので、
参考にさせていただきます。