MySQL 데이터베이스 WHERE와 HAVING의 차이점

1163 단어 MySQL
자신의 면접에서 손으로 쓴 sql 문제를 총결하다
  SQL    fenshu,           80     

     :
+--------+---------+---------+
| name   | kecheng | chengji |
+--------+---------+---------+
|      |       |      81 |
|      |       |      75 |
|      |       |      76 |
|      |       |      90 |
|      |       |      81 |
|      |       |     100 |
|      |       |      90 |
+--------+---------+---------+
select kecheng, group_concat(name) from fenshu where chengji >80  group by kecheng having kecheng='  ';
+---------+--------------------+
| kecheng | group_concat(name) |
+---------+--------------------+
|       |   ,            |
+---------+--------------------+

그때 자기가'select kecheng, group'이라고 썼어요.concat(name) from fenshu group by kecheng having kecheng > 80 ;’ WHERE와 HAVING의 차이를 잊고 HAVING의 작용과 GROUP BY 이후만 알 뿐이다.검색 결과집 전에 chengji > 80 을 WHERE 로 필터한 다음 HAVING 검색kecheng = '국어'
결론: WHERE와 HAVING의 차이점은 HAVING는 집합 후의 결과에 대해 조건적인 여과를 하고 WHERE는 집합 전에 기록을 여과하는 것이다.만약 논리가 허용된다면 가능한 한 WHERE로 기록을 먼저 여과하면 결과집을 줄이고 조회 효율을 높일 수 있으며 마지막으로 논리에 따라 HAVING로 다시 여과할 수 있다

좋은 웹페이지 즐겨찾기