sql >> データベース >  >> RDS >> Mysql

最大値で個別の行を取得する方法

    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 でも引き続き機能します。 。



    1. 問題セット2–エンティティと属性の特定

    2. 最大値で個別の行を取得する方法

    3. 加重行確率を持つPostgreSQLテーブルからランダムな行を選択します

    4. BSON ObjectId値をSQLデータベースに保存する効率的な方法を見つけた人はいますか?