> 데이터 베이스 > MySQL 튜토리얼 > SQL Server의 LEFT JOIN: `ON` 절과 `WHERE` 절의 차이점은 무엇입니까?

SQL Server의 LEFT JOIN: `ON` 절과 `WHERE` 절의 차이점은 무엇입니까?

DDD
풀어 주다: 2024-12-29 22:45:24
원래의
706명이 탐색했습니다.

LEFT JOINs in SQL Server: What's the Difference Between `ON` and `WHERE` Clauses?

재검토되는 Left 조인: ON 절과 WHERE 절의 구별

SQL Server에서 LEFT JOIN 연산은 데이터 검색에 중요한 역할을 합니다. 여러 테이블에서. 그러나 ON 절과 WHERE 절에 조인 조건을 지정하는 것 사이에는 미묘하지만 중요한 차이가 있습니다.

다음 쿼리를 고려하십시오.

SELECT t1.f2
FROM t1
LEFT JOIN t2
ON t1.f1 = t2.f1 AND cond2 AND t2.f3 > something
로그인 후 복사

이 쿼리는 f2 열을 검색하려고 시도합니다. f1 열의 일치하는 값과 추가 조건(cond2 및 t2.f3 > Something).

반대로 다음 쿼리는 다른 접근 방식을 취합니다.

SELECT t1.f2
FROM t1
LEFT JOIN t2
ON t1.f1 = t2.f1 AND cond2
WHERE t2.f3 > something
로그인 후 복사

여기서 조인 조건은 ON 절에만 지정되고 t2.f3 > WHERE 절에 어떤 조건이 필터로 추가됩니다.

차이 이해

이 두 쿼리의 주요 차이점은 작업 순서에 있습니다.

  • ON 절: 조인에 일치하는 행을 식별하는 데 사용되는 조건을 지정합니다. 이러한 조건을 충족하지 않는 행은 조인된 결과 집합에서 제외됩니다.
  • WHERE 절: 조인된 결과 집합에서 추가 조건에 따라 행을 필터링합니다.

이러한 구별을 설명하기 위해 후보자 표를 고려하십시오. (후보자) 및 투표 테이블(투표):

candidates
| name        |
|-------------|
| Obama        |
| Romney        |

votes
| voter       | voted_for |
|-------------|-------------|
| Mickey Mouse | Romney      |
| Donald Duck  | Obama       |
로그인 후 복사

쿼리 1:

SELECT *
FROM candidates c
LEFT JOIN votes v
ON c.name = v.voted_for AND v.voter = 'Donald Duck'
로그인 후 복사

이 쿼리는 Romney를 포함한 모든 후보자를 검색합니다. 도널드 덕이 오바마에게 투표했다. ON 절에 v.voter = 'Donald Duck' 조건이 지정되어 조인 연산에만 영향을 미치기 때문입니다.

쿼리 2:

SELECT *
FROM candidates c
LEFT JOIN votes v
ON c.name = v.voted_for
WHERE v.voter = 'Donald Duck'
로그인 후 복사

이 쿼리에서는 v.voter = 'Donald Duck' 조건이 WHERE 절로 이동되었습니다. 결과적으로 롬니는 도널드 덕과 일치하는 표를 얻지 못해 결과 집합에서 제외됐다. Donald Duck의 투표를 받은 Obama만 반환됩니다.

결론

LEFT JOIN 연산에서 ON과 WHERE 절의 차이점을 이해하는 것은 효과적인 검색을 위해 필수적입니다. SQL Server의 데이터. 해당 절에 조건을 신중하게 배치하면 일치 기준을 제어하고 결합된 결과 집합을 효율적으로 필터링할 수 있습니다.

위 내용은 SQL Server의 LEFT JOIN: `ON` 절과 `WHERE` 절의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿