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

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

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

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

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 и выбрасывать любой ряд сauthorId Я уже видел, но мне нужно получить определенное количество записей, и это может стать неловким (... возможно, потребуется выполнить запрос снова со смещением, если я выбрасываю слишком много строк и т. Д.) ... но в конце это могло бы быть лучшим решением, если бы решение с одним запросом было слишком сложным или его вообще не было ...

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

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

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