SELECT id, authorId, answer, votes
FROM ( SELECT id, authorId, answer, votes
FROM answers
ORDER BY votes DESC) AS h
GROUP BY authorId
Този малък чист трик е изграден въз основа на GROUP BY
за да извлечете първия ред от всеки случай. Обикновено това е по подразбиране ORDER BY id ASC
, но чрез тази подзаявка, първият ред във всеки authorId
с най-много votes
.
Забележка: Както беше споменато от Iain Elder, това решение не работи с ONLY_FULL_GROUP_BY
активен и работи само в MySQL. Това решение до известна степен не се поддържа поради липса на документация, потвърждаваща това поведение. Работи добре за мен и винаги ми е работил добре.
Този метод все още работи с най-новия MySQL на sqlfiddle .