Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL SELECT 쿼리에서 GROUP BY 절이 없는 비그룹 필드와 함께 그룹 함수를 사용하지 말아야 하는 이유는 무엇입니까?

<시간/>

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)

위의 결과 집합에서 GROUP BY 절의 도움으로 의미 있는 출력을 얻은 것을 관찰할 수 있습니다.