데이터베이스 문의 where, on 및 have의 차이점

어디에서 가지고 있는지의 차이

여기서 on have는 쿼리 조건으로, 한정된 데이터를 필터링할 수 있습니다. 이 세 가지의 주요 차이점은 제한 시점이 다르다는 것입니다.

실행 순서: ON------>WHERE------>HAVING

어디에 와 데

① where 의 필터링 단위는 데이터 행이고 한정된 데이터 행은 필터링되고 절은 where그룹화 GROUP BY및 집계 함수 전에 데이터 행을 필터링하므로 집계 함수는 where에서 사용할 수 없습니다. 가지고 있기 전에 작동하는 곳.

②having은 단독으로 사용할 수 없으며, GROUP BY 절 뒤에만 나타날 수 있으며, having이 절은 GROUP BY그룹화 및 집계 기능 다음에 데이터 행을 필터링합니다 . 따라서 그룹을 필터링해야 하는 경우 집계 함수를 사용할 수 있습니다.

③있을 수 있는 조건 : 그룹핑 후 얻을 수 있는 데이터의 집계함수 및 컬럼명(즉, 그룹핑 필드 또는 집계함수만 사용 가능)

그룹화 필드가 절 에서 HAVING필터 조건으로 사용된다면 그룹화 작업을 수행하고 집계 함수를 계산하기 전에 불필요한 데이터를 필터링할 수 있기 WHERE때문에 성능 측면에서 그룹화 필드를 절로 대체해야 합니다. WHERE소유의 조건은 일반적으로 집계 함수입니다.

요약하자면, 여기서 는 그룹화 및 집계 함수 이전에 데이터를 필터링하는 데 사용되고, have는 집계 함수의 계산 결과가 계산된 후 결과를 필터링하는 데 사용되며 조건을 충족하는 그룹화가 반환됩니다.

on 화where

①on은 테이블과 테이블 간의 연결을 제한하기 위해 사용되는 조건입니다.

② 왼쪽 외부 조인에서 ON은 왼쪽 테이블의 모든 레코드를 반환하고, 오른쪽 외부 조인에서는 ON이 ​​오른쪽 테이블의 모든 레코드를 반환합니다. 내부 연결인 경우 where 및 on은 동일한 효과를 가집니다.

③on 조건에 맞지 않는 데이터 행은 임시 테이블(필터 데이터)에 나타나지 않으며 where 조건을 만족하는 데이터 행은 on 조건 이후에 얻은 결과에 따라 필터링됩니다.

일반적으로 ON은 제한 조건에 따라 데이터 행 레코드를 필터링한 다음 임시 테이블을 생성하고 WHERE는 임시 테이블 생성 후 제한 조건에 따라 임시 테이블의 결과를 필터링합니다.

ON 제약 조건이 먼저 발생하기 때문에 임시 테이블의 데이터 세트가 더 작기 때문에 WHERE보다 ON의 성능이 더 좋습니다.

Supongo que te gusta

Origin blog.csdn.net/m0_48895748/article/details/126708856
Recomendado
Clasificación