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

MySQLでグループ化すると、どの行のフィールドが返されますか?

    どのIDが返されますか(1、2、または3)?

    A:サーバーは、必要なIDと同じ名前のすべてのレコードを選択します(おそらく、フェッチが最も速く、予測できません)。公式ドキュメントを引用するには:

    このリンク の詳細情報 。

    このクエリはどのIDでORDERBYになりますか(返されるのと同じですか?...質問1を参照)?

    取得する結果を予測できないため、取得したデータが返される順序を確認することは意味がありません。ただし、予測できないID列でソートされた結果が得られる可能性が非常に高くなります。

    どのIDが返される/注文に使用されるかを制御できますか?例えば。最大のID、またはグループからの最初のIDを返します。

    この時点では、できないと想定する必要があります。ドキュメントをもう一度お読みください。

    さらに明確にする:不適切に使用されたGROUPBY句の結果を予測することはできません。 MySQLの主な問題は、非標準的な方法で使用できることですが、その機能の使用方法を知る必要があります。その背後にある主なポイントは、常に同じであることがわかっているフィールドでグループ化することです。 EG:

    SELECT id, name, COUNT( * ) AS frequency
    FROM table
    GROUP BY id
    

    ここで、あなたはnameを知っています idとして一意になります nameを機能的に決定します 。したがって、あなたが知っている結果は有効です。名前でもグループ化した場合、このクエリはより標準的ですが、MySQLではパフォーマンスが少し低下します。

    最後に、私の経験では、選択されたフィールドとグループ化されていないフィールドに対する非標準のクエリの結果は、通常、GROUP BYを適用した結果になることを考慮に入れてください。 次に、ORDER BY その分野で。そのため、何度も思われる 働くために。ただし、テストを続けると、最終的にはこれが95%の確率で発生することがわかります。そして、あなたはその数に頼ることはできません。



    1. withCountメソッドでwhere句を使用したLaravel

    2. エラー値が存在しません-postgresqlINSERTINTOの問題

    3. PostgreSQLで年齢を年単位で計算する

    4. MySQLで毎日のアクティブユーザー(DAU)を計算する方法