Аналогично этот вопрос , у меня есть следующая таблица в MySQL 8.0.15:
CREATE TABLE golf_scores (id INT PRIMARY KEY AUTO_INCREMENT, person TEXT, score INT, age INT);
INSERT INTO golf_scores (person, score, age) VALUES ('Angela', 40, 25),('Angela', 45, 25),('Angela', 55, 25),('Peter',45, 32),('Peter',55,32),('Rachel', 65, 35),('Rachel',75,35),('Jeff',75, 16);
SELECT * FROM golf_scores;
+----+--------+-------+------+
| id | person | score | age |
+----+--------+-------+------+
| 1 | Angela | 40 | 25 |
| 2 | Angela | 45 | 25 |
| 3 | Angela | 55 | 25 |
| 4 | Peter | 45 | 32 |
| 5 | Peter | 55 | 32 |
| 6 | Rachel | 65 | 35 |
| 7 | Rachel | 75 | 35 |
| 8 | Jeff | 75 | 16 |
+----+--------+-------+------+
Мы хотим выбрать следующие «лучшие» 3 строки:
+----+--------+-------+------+
| id | person | score | age |
+----+--------+-------+------+
| 1 | Angela | 40 | 25 |
| 4 | Peter | 45 | 32 |
| 6 | Rachel | 65 | 35 |
+----+--------+-------+------+
Другими словами, самые низкие 3 оценки в гольфе без дубликатов по лицам , а также другие столбцы из этого ряда .Я не беспокоюсь о связях;Мне бы все равно хотелось получить три результата.
Запрос SELECT person, MIN(score) as min_score FROM golf_scores GROUP BY person ORDER BY min_score LIMIT 3;
дает правильные строки, но ограничен столбцами person
и score`.Когда я пытаюсь изменить его следующим образом:
SELECT id, person, MIN(score) as min_score, age FROM golf_scores GROUP BY person ORDER BY min_score LIMIT 3;
я получаю эту ошибку:
ОШИБКА 1055 (42000): выражение # 1 списка SELECT отсутствует в предложении GROUP BYи содержит неагрегированный столбец records.golf_scores.id, который функционально не зависит от столбцов в предложении GROUP BY;это несовместимо с sql_mode = only_full_group_by
Я также пытался удалить дубликаты имен с помощью SELECT id, DISTINCT person, score, age FROM golf_scores ORDER BY score LIMIT 3
, но получаю ошибку
ОШИБКА 1064 (42000): у вас есть ошибкав вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который можно использовать рядом с «РАЗЛИЧНЫМ человеком», наберите ОТ ОТ ГОРЯЧИХ СПОСОБОВ ЗАКАЗАТЬ ПО ЛИЦУ 3 »в строке 1
Как можноЯ получаю желаемый вывод в MySQL?