[解決済み] MySQLで、テーブルのレコードインデックスを含むカラムを生成するにはどうすればよいですか?
2022-12-01 21:18:39
質問
クエリから実際の行番号を取得する方法はありますか?
リーグガールというテーブルをスコアというフィールドで並べ替え、ユーザー名とそのユーザー名の実際の行の位置を返せるようにしたいのです。
私は、特定のユーザーがどこにいるかわかるように、ユーザーに順位をつけたいと思っています。たとえば、Joe は 200 のうち 100 の位置です。
User Score Row
Joe 100 1
Bob 50 2
Bill 10 3
ここでいくつかの解決策を見ましたが、私はそれらのほとんどを試しましたが、どれも実際に行番号を返しませんでした。
私はこれを試しました。
SELECT position, username, score
FROM (SELECT @row := @row + 1 AS position, username, score
FROM league_girl GROUP BY username ORDER BY score DESC)
由来通り
...ですが、行の位置は返さないようです。
何かいい方法はないでしょうか?
どのように解決するのですか?
以下のことを試してみてください。
SELECT l.position,
l.username,
l.score,
@curRow := @curRow + 1 AS row_number
FROM league_girl l
JOIN (SELECT @curRow := 0) r;
は
JOIN (SELECT @curRow := 0)
の部分は、変数の初期化を、別の
SET
コマンドを使わなくても変数の初期化ができるようになります。
テストケースです。
CREATE TABLE league_girl (position int, username varchar(10), score int);
INSERT INTO league_girl VALUES (1, 'a', 10);
INSERT INTO league_girl VALUES (2, 'b', 25);
INSERT INTO league_girl VALUES (3, 'c', 75);
INSERT INTO league_girl VALUES (4, 'd', 25);
INSERT INTO league_girl VALUES (5, 'e', 55);
INSERT INTO league_girl VALUES (6, 'f', 80);
INSERT INTO league_girl VALUES (7, 'g', 15);
テストクエリです。
SELECT l.position,
l.username,
l.score,
@curRow := @curRow + 1 AS row_number
FROM league_girl l
JOIN (SELECT @curRow := 0) r
WHERE l.score > 50;
結果
+----------+----------+-------+------------+
| position | username | score | row_number |
+----------+----------+-------+------------+
| 3 | c | 75 | 1 |
| 5 | e | 55 | 2 |
| 6 | f | 80 | 3 |
+----------+----------+-------+------------+
3 rows in set (0.00 sec)
関連
-
'INSERT文はFOREIGN KEY制約「FK_TourismReservation_Users」と競合していました。その
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLでコマンドラインを使用してユーザーアカウントのリストを取得するにはどうすればよいですか?
-
[解決済み] MySQLのクエリ結果をCSV形式で出力するにはどうすればよいですか?
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] MySQLデータベースのテーブルのサイズを取得する方法は?
-
[解決済み] MySQL で特定のカラム名を持つすべてのテーブルを見つけるにはどうすればよいですか?
-
[解決済み] MYSQLでMAX(列の値)、PARTITIONで別の列で行を選択するにはどうすればよいですか?
-
[解決済み] MySQLでデータベースやテーブルのインデックスを見るには?
-
[解決済み】MySQLのDatetimeカラムにデフォルト値を設定する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mysqlでインデックスに障害が発生する原因は何ですか?
-
MySQLのNULLについて解説した記事
-
MySQLはこのようなUpdateステートメントを書くべきではありません
-
SpringBootのMySQLへの接続は、バックエンドのインターフェイスの操作方法を書き込むためのデータを取得するために
-
MySQLデータベースで数百万件のデータを10秒間で挿入
-
[解決済み] datetimeの挿入時に文字列から日付や時刻を変換すると、変換に失敗する
-
'INSERT文はFOREIGN KEY制約「FK_TourismReservation_Users」と競合していました。その
-
群関数解の無効な使用
-
[解決済み] 1つのSQLクエリで複数のカウントを取得する方法は?
-
[解決済み] MySQLのプロセスリストを見つけ、それらのプロセスを終了させる方法は?