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

PHPz
リリース: 2023-08-28 22:01:05
転載
759 人が閲覧しました

为什么我们不应该在 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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート