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

MySQL의 WHERE vs HAVING?

<시간/>

WHERE 절이라는 조건절을 사용하여 결과를 필터링할 수 있습니다. 이 WHERE 절을 사용하여 테이블에서 필요한 레코드를 선택하기 위한 선택 기준을 지정할 수 있습니다. HAVING 절은 행 또는 집계 그룹에 대한 필터 조건을 지정합니다.

WHERE 절은 집계 함수와 함께 사용할 수 없지만 HAVING은 집계 함수와 함께 사용할 수 있습니다. 다음은 예입니다 -

이제 테이블을 생성해 보겠습니다.

mysql> create table WhereDemo
   -> (
   -> Price int
   -> );
Query OK, 0 rows affected (0.64 sec)

테이블에 레코드 삽입하기.

mysql> insert into WhereDemo values(100);
Query OK, 1 row affected (0.13 sec)

mysql> insert into WhereDemo values(200);
Query OK, 1 row affected (0.21 sec)

mysql> insert into WhereDemo values(300);
Query OK, 1 row affected (0.15 sec)

mysql> insert into WhereDemo values(400);
Query OK, 1 row affected (0.12 sec)

모든 기록을 표시합니다.

mysql> select *from WhereDemo;

다음은 출력입니다.

+-------+
| Price |
+-------+
|   100 |
|   200 |
|   300 |
|   400 |
+-------+
4 rows in set (0.00 sec)

HAVING 절은 집계 함수와 함께 사용할 수 있습니다.

mysql>  select sum(Price) from WhereDemo HAVING Sum(Price) > 500;

다음은 출력입니다.

+------------+
| sum(Price) |
+------------+
|       1000 |
+------------+
1 row in set (0.00 sec)

여기서 집계 함수와 함께 WHERE를 사용하려고 하면 ERROR가 생성됩니다.

mysql> select sum(Price) from WhereDemo where Sum(Price) > 200;
ERROR 1111 (HY000): Invalid use of group function