MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLSELECTクエリでGROUPBY句のない非グループフィールドを持つグループ関数を使用しないのはなぜですか?


これは、GROUP BY句がないと、MySQLによって返される出力が誤解を招く可能性があるためです。以下の「学生」の表に、それを示すために次の例を示します-

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)

上記の結果セットから、GROUPBY句を使用して意味のある出力が得られたことがわかります。


  1. MySQLを使用したJavaでのselectクエリにプリペアドステートメントを使用するにはどうすればよいですか?

    これにはexecuteQuery()を使用する必要があります。構文は次のとおりです- yourPreparedStatementObject=yourConnectionObject.prepareStatement(yourQueryName); yourresultSetObject=yourPreparedStatementObject.executeQuery(); データベースの「サンプル」にテーブルを作成します。テーブルを作成するためのクエリは次のとおりです- mysql> create table JavaPreparedStatement -> ( -

  2. MySQLでSelectクエリを使用して挿入

    SELECTクエリを使用した挿入の場合、構文は次のとおりです- insert into yourTableName(yourColumnName1,yourColumnName2,yourColumnName3,...N) select yourValue1,yourValue2,yourValue3,......N;を選択します。 まずテーブルを作成しましょう- mysql> create table DemoTable1603    -> (    -> StudentId int,    -> Stud