秒台の最高値を保つ私はからユーザが達成された最高のスコアを選択する必要があり、私のテーブルはグループ最初のテーブルの上によると、ここで
+----------+-----------+
| id | user_id |
+----------+-----------+
| 1 | 1 |
+----------+-----------+
| 2 | 1 |
+----------+-----------+
| 3 | 1 |
+----------+-----------+
| 4 | 2 |
+----------+-----------+
| 5 | 2 |
+----------+-----------+
| 6 | 2 |
+----------+-----------+
| 7 | 3 |
+----------+-----------+
| 8 | 3 |
+----------+-----------+
| 9 | 3 |
+----------+-----------+
私の第二のテーブル
+----------+---------+
| id | score |
+----------+---------+
| 1 | 10 |
+----------+---------+
| 2 | 20 |
+----------+---------+
| 3 | 5 |
+----------+---------+
| 4 | 40 |
+----------+---------+
| 5 | 15 |
+----------+---------+
| 6 | 10 |
+----------+---------+
| 7 | 5 |
+----------+---------+
| 8 | 30 |
+----------+---------+
| 9 | 10 |
+----------+---------+
ですこれらのテーブル。ここで
が私のMySQLクエリです
SELECT * FROM
table_1 AS t1
INNER JOIN
table_2 AS t2 ON
t1.id = t2.id
WHERE t2.score > 10
GROUP BY t1.user_id
ORDER BY t2.score DESC
私の欲求の結果は
+----------+-----------+---------+
| id | user_id | score |
+----------+-----------+---------+
| 4 | 2 | 40 |
+----------+-----------+---------+
| 8 | 3 | 30 |
+----------+-----------+---------+
| 2 | 1 | 20 |
+----------+-----------+---------+
あるしかし、私は得ることは私MySQLはいつものtable_1から最低id
を選択している
+----------+-----------+---------+
| id | user_id | score |
+----------+-----------+---------+
| 4 | 2 | 40 |
+----------+-----------+---------+
| 1 | 1 | 10 |
+----------+-----------+---------+
| 7 | 3 | 5 |
+----------+-----------+---------+
ですGROUP BY
句を使用しています
私はこの
SELECT *, MAX(t2.score) AS max_score FROM
table_1 AS t1
INNER JOIN
table_2 AS t2 ON
t1.id = t2.id
WHERE t2.score > 10
GROUP BY t1.user_id
ORDER BY t2.score DESC
LIMIT 10
ようMAX
コマンドを使用してみました、結果は私は私はそれが非常に簡単取得したい結果を信じているが、私はどこにも存在してい
+----------+-----------+---------+-----------+
| id | user_id | score | max_score |
+----------+-----------+---------+-----------+
| 4 | 2 | 40 | 40 |
+----------+-----------+---------+-----------+
| 1 | 1 | 10 | 20 |
+----------+-----------+---------+-----------+
| 7 | 3 | 5 | 30 |
+----------+-----------+---------+-----------+
を取得しています。
この質問は、重複マークされていたが、残念ながら私はその特定のページ上の任意の解決策を見つけることができませんでした1
更新。
私が試しているクエリですが、失敗します。
SELECT * AS max_score FROM
table_1 AS t1
INNER JOIN
(
SELECT *, MAX(score) AS max_score
FROM table_2
GROUP BY t1.user_id
) AS t2
ON
t1.id = t2.id
WHERE t2.score > 10
ORDER BY t2.score DESC
LIMIT 10
それは私がtable_2
とグループでtable_1
であるuser_id
によって結果である列score
から最高値を取得しようとしているUnknown column t1.user_id
私にエラーを与えます。
これらのページに記載されている例は、1つのテーブルのみを対象としており、私のシナリオではその作業を行います。
@Barmarあなたは再質問をチェックして、このことから、重複するタグを削除するか、シナリオの同じ種類を表すいくつかの別のQ/Aにリダイレクトしたいですか? – Anuj
質問を誤解しましたか? 2つのテーブルを結合した後、各user_idグループ内でスコアが最も高い行が必要になります。もう1つの質問は、各グループの列の最大値を持つ行を取得する方法を示しています。 – Barmar
はい@barmar私は正確に各ユーザーグループの最高得点が必要です。私のコラムスコア(ここではMAXを適用)とユーザーID(ここでGROUP BYを適用)は2つの異なるテーブルにあります。あなたが同じ種類の状況で私をいくつかのページにリダイレクトすることができれば幸いです。 – Anuj