У меня есть две таблицы, как показано ниже:Прицепные MySQL строки с максимальным значением определенного столбца в группе
Table Name : scores
+-------+-----------+--------------+-----------+
| UNID | name | score | PRID |
+-------+-----------+--------------+-----------+
| 1 | name_1 | 93 | 1 |
| 2 | name_2 | 71 | 1 |
| 3 | name_3 | 53 | 2 |
| 4 | name_4 | 82 | 2 |
| 5 | name_5 | 31 | 2 |
| 6 | name_6 | 68 | 3 |
+-------+-----------+--------------+-----------+
И
Table Name : user_dir
+-------+-----------+--------------+-----------+
| PRID | fname | city | gender |
+-------+-----------+--------------+-----------+
| 1 | fname1 | XX | m |
| 2 | fname2 | YY | f |
| 3 | fname3 | ZZ | f |
+-------+-----------+--------------+-----------+
для любого заданного ИУП от user_dir, как может Я получаю всю строку, которая соответствует наибольшему значению оценка для этого PRID?
В качестве примера, для пользователя «fname2» с ИУПОМ 2, я хочу, чтобы вытащить всю эту строку (а не только значения балла) следующим образом:
+-------+-----------+--------------+-----------+
| UNID | name | score | PRID |
+-------+-----------+--------------+-----------+
| 4 | name_4 | 82 | 2 |
Я попытался это с помощью «макс» функции этой строки, но вместо этого он дает мне первую строку найденной с этим ИУПОМ, наряду с правильным значением (макс) нот следующим образом:
+-------+-----------+--------------+-----------+
| UNID | name | score | PRID |
+-------+-----------+--------------+-----------+
| 3 | name_3 | 82 | 2 |
EDIT: Я неправильно понял мое требование, для окончательного результата необходимо иметь соответствующее значение «имя» для наивысшего балла, а не самого высокого балла.
Так фактический конечный результат будет:
+-------+-----------+--------------+-----------+
| PRID | name | fname | score |
+-------+-----------+--------------+-----------+
| 1 | fname1 | name_1 | 93 |
| 2 | fname2 | name_4 | 82 |
| 3 | fname3 | name_6 | 68 |
Этот на вопрос было ответино сотни раз на переполнение стека. Я выбрал один из самых старых ответов с самым высоким голосом и проголосовал за то, чтобы закрыть это как дубликат. Если вам это не нравится, нажмите тег, который я добавил, и найдите один из многих других ответов. –
@BillKarwin Дубликат, с которым вы связаны, предназначен для Oracle. Он не будет работать в MySQL. – Barmar
См. Также http://dev.mysql.com/doc/refman/5.7/en/example-maximum-column-group-row.html –