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

SELECT句に集計関数が存在しない場合のGROUPBYの動作

    MySQLドキュメント> この特定の点について。

    一言で言えば、MySQLではパフォーマンスの目的でGROUP BYから一部の列を省略できますが、これは省略された列がすべて同じ値である場合にのみ機能します (グループ内)それ以外の場合、クエリによって返される値は実際には不確定です 、この投稿で他の人が適切に推測したように。 ORDER BY句を追加しても、決定論的な動作が再導入されないことを確認してください。

    問題の核心ではありませんが、この例は、目的の列を明示的に列挙するのではなく、*を使用することがしばしば悪い考えであることを示しています。

    MySQL 5.0ドキュメントからの抜粋:

    When using this feature, all rows in each group should have the same values
    for the columns that are omitted from the GROUP BY part. The server is free
    to return any value from the group, so the results are indeterminate unless
    all values are the same. 
    


    1. SQL Serverレプリケーションでは、サーバーに接続するために実際のサーバー名が必要です

    2. SELECTリストがGROUPBY句に含まれておらず、集計されていない列が含まれています.... sql_mode=only_full_group_byと互換性がありません

    3. PL / SQLにファイルが存在するかどうかを確認する方法は?

    4. 優れたデータベース設計の重要性(およびそれを達成するための7つのステップ)