как получить отдельные строки с максимальным значением

мои извинения за вопрос, что должно быть очень просто решить, но я просто могуКажется, я не могу понять это ... Я не могдаже не придумать действительно подходящего названия для моего вопроса, прошу прощения за это.

У меня есть опрос, где каждый пользователь может опубликовать несколько ответов на вопрос, а другие затем голосовать за эти ответы. Мне нужно получить результат, при котором будет получен ответ с наибольшим количеством голосов каждого пользователя.

Тестовый случай: пустьпринять вопрос какКакая твоя самая любимая песня? "

CREATE TABLE `answers` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`authorId` INT,
`answer` TEXT NOT NULL ,
`votes` INT NOT NULL 
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;

INSERT INTO `answers` VALUES
(1, 30, "The West is the Best", 120),
(2, 30, "Come on, baby, light my fire", 100),
(3, 31, "Everything's gonna be allright", 350),
(4, 31, "Sayin' oooh, I love you", 350),
(5, 31, "Singing sweet songs of melodies pure and true", 290),
(6, 32, "I'm your pole and all you're wearing is your shoes", 540),
(7, 32, "And I'm crazier when I'm next to her", 180),
(8, 32, "You hear the music in the air", 230),
(9, 30, "You know they are a liar", 190)

Результат, который я ожидаю получить:

id | authorId | answer                                             | votes
 6 |       32 | I'm your pole and all you're wearing is your shoes | 540
 3 |       31 | Everything's gonna be allright                     | 350
 9 |       30 | You know they are a liar                           | 190

По сути, мне нужно выбрать лучший ответ для каждого автора, а затем отсортировать результаты по голосам, которые получили лучшие ответы. Может случиться, что два ответа от одного автора будут иметь одинаковое количество голосов; тогда должен быть выбран только первый опубликованный (нижний идентификатор) (как показано с ответами № 3 и № 4). Два разных ответа от одного автора могут никогда не появиться в результате - каждый автор может выиграть только один раз.

я искал, искал, пытался и пытался снова, и в данный момент я чувствую себя довольно промытым… возможно, это невозможно в одном запросе SQL; в таком случае, возможно, стоит указать, что приложение написано на PHP. Я знаю, что могу просто взять все ответы сORDER BY votes desc, id asc а затем перебрать результат, запомнить всеauthorIdS и выбросить любой ряд с IauthorIdя уже видел, но мне нужно получить определенное количество записей, и это может стать неуклюжим (... возможно, потребуется выполнить запрос снова со смещением, если я выбрасываю слишком много строк и т. д.) .. но в конце это может быть лучшим решением, если решение с одним запросом было слишком сложным или его вообще не было ...

Есть идеи? : О)

Ответы на вопрос(4)

Ваш ответ на вопрос