ホームページ  >  記事  >  データベース  >  MySQL SELECT クエリで GROUP BY 句を使用せずに、グループ化されていないフィールドに対してグループ関数を使用すべきではないのはなぜですか?

MySQL SELECT クエリで GROUP BY 句を使用せずに、グループ化されていないフィールドに対してグループ関数を使用すべきではないのはなぜですか?

PHPz
PHPz転載
2023-08-28 22:01:05726ブラウズ

为什么我们不应该在 MySQL SELECT 查询中使用没有 GROUP BY 子句的非分组字段的分组函数?

これは、GROUP BY 句がないと、MySQL から返される出力が誤解を招く可能性があるためです。デモンストレーションの目的で、以下の「Students」テーブルに次の例を示しました。

mysql> Select * from Student;
+------+---------+---------+-----------+
| Id   | Name    | Address | Subject   |
+------+---------+---------+-----------+
| 1    | Gaurav  | Delhi   | Computers |
| 2    | Aarav   | Mumbai  | History   |
| 15   | Harshit | Delhi   | Commerce  |
| 20   | Gaurav  | Jaipur  | Computers |
+------+---------+---------+-----------+
4 rows in set (0.00 sec)

mysql> Select count(*), Name from Student;
+----------+--------+
| count(*) | name   |
+----------+--------+
| 4        | Gaurav |
+----------+--------+
1 row in set (0.00 sec)

上記のクエリ結果から、グループ関数 COUNT(*) の出力がテーブルとして返されることがわかりますが、 「Name」フィールドの値「Gaurav」は誤解を招きます。なぜなら、それがカラムの最初の値であるか、カラムに複数回格納されているかのいずれかに基づいてこれを行っているため、MySQL はそれを返します。

GROUP BY 句を使用してこのクエリを作成すると、結果セットは次のようになります -

mysql> Select count(*), name from student GROUP BY id;
+----------+---------+
| count(*) | name    |
+----------+---------+
| 1        | Gaurav  |
| 1        | Aarav   |
| 1        | Harshit |
| 1        | Gaurav  |
+----------+---------+
4 rows in set (0.00 sec)

上記の結果セットからわかるように、GROUP BY 句を使用すると、意味のある出力が得られます。

以上がMySQL SELECT クエリで GROUP BY 句を使用せずに、グループ化されていないフィールドに対してグループ関数を使用すべきではないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
前の記事:NoSQL の課題次の記事:NoSQL の課題