すごく初歩的な質問だと思うのですが、答えがでてきません。

SQLでSELECTする際、結果レコードに1、2、3、4のように順番をカラムに追加する構文ってどうするのでしたか?
LIMITを使えば、例えばソート結果の5番目に該当するレコードを選択表示できますが、その逆でSELECTされたうちの該当レコードが何番目なのかが知りたいのです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:kuromaku0103 No.1

回答回数28ベストアンサー獲得回数0

ポイント20pt

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によってはサポートしてないものもあったかもしれません。

id:kyoko55

MySQLでの使用だったのですが、あえてDBの種類は言及せず質問させていただきましたので、

参考にさせていただきます。

2004/11/11 12:33:57
id:sanyozora No.2

回答回数8ベストアンサー獲得回数0

ポイント20pt

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句にすれば、該当データのランキングを取得可能です。

id:kyoko55

ありがとうございます。

あとでじっくり読んで見ます。

2004/11/11 12:35:59
id:wata5513 No.3

回答回数57ベストアンサー獲得回数0

ポイント10pt

http://www.hatena.ne.jp/1100142292

人力検索はてな - すごく初歩的な質問だと思うのですが、答えがでてきません。 SQLでSELECTする際、結果レコードに1、2、3、4のように順番をカラムに追加する構文ってどうするのでしたか..

urlはダミーです

order by 式

です

id:kyoko55

1の回答者のrow_numberのようなことを

MySQLでやる方法を探しています。

2004/11/11 12:56:14
id:inokuni No.4

回答回数1343ベストアンサー獲得回数21

ポイント40pt

SET @tmp :=0;

SELECT *, @tmp := @tmp +1 AS tmp FROM table;

このようにすれば、

カラム名「tmp」に「1, 2, 3, ・・・」と

番号が振られていきます。

id:kyoko55

まさしくこれです。

はじめからMySQLと限定して質問すればよかった

かもしれません。

皆さんありがとうございました。

2004/11/11 14:45:43
id:kacchan6 No.5

回答回数106ベストアンサー獲得回数0

ポイント20pt

オラクルみたいなrownumではありませんが、

テーブル定義するときに自動でインクリメントしてくれるカラムを定義できます。

アクセスで言うオートナンバーみたいな物です。

id:kyoko55

テーブル定義してしまうのではなく、様々なSELECT結果での順位というか、番号をつけたかったんです。

皆さんありがとうございました。

2004/11/11 14:47:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません