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でのみ機能します。この動作を確認するドキュメントが不足しているため、このソリューションはある程度サポートされていません。それは私にとってはうまく機能しますが、常に私にとってはうまく機能しています。
このメソッドは、最新の MySQLonsqlfiddle でも引き続き機能します。 。