데이터베이스를 배울 때 우리는 on과 where를 자주 접하게 됩니다. 오늘은 on과 where의 차이점에 대해 이야기하겠습니다.
데이터베이스가 두 개 이상의 테이블을 연결하여 레코드를 반환하면 중간 임시 테이블을 생성한 다음 이 임시 테이블을 사용자에게 반환합니다.
Left 조인을 사용할 때 on 조건과 where 조건의 차이점은 다음과 같습니다.
1. on 조건은 임시 테이블을 생성할 때 사용되는 조건입니다. 에 사실입니다.
2. where 조건은 임시 테이블이 생성된 후 임시 테이블을 필터링하는 조건입니다. 이때 Left Join의 의미는 없습니다(왼쪽 테이블의 레코드가 반환되어야 함). 조건이 true가 아닌 경우 모두 필터링됩니다.
두 개의 테이블이 있다고 가정합니다.
테이블 1: tab1
id size1 102 203 30
테이블 2: tab2
size name10 AAA20 BBB20 CCC
두 개의 SQL:
1、select * from tab1 left join tab2 on tab1.size = tab2.size where tab2.name='AAA'2、 select * from tab1 left join tab2 on tab1.size = tab2.size and tab2.name='AAA'
The 첫 번째 SQL 프로세스:
1. 중간 테이블
조건:
tab1.size = tab2.size tab1.id tab1.size tab2.size tab2.name1 10 10 AAA2 20 20 BBB2 20 20 CCC3 30 (null) (null)
2. 중간 테이블 필터링
조건:
tab2.name='AAA' tab1.id tab1.size tab2.size tab2.name1 10 10 AAA
두 번째 SQL 프로세스:
1 조건:
tab1.size = tab2. size 및 tab2.name='AAA'(조건이 true가 아닌 경우 왼쪽 테이블의 레코드도 반환됨)
tab1.id tab1.size tab2.size tab2.name1 10 10 AAA2 20 (null) (null) )3 30 (null) (null)
사실 위 결과의 핵심 이유는 Left Join, Right Join, Full Join의 특수성입니다.
on의 조건이 true인지 여부에 관계없이 왼쪽 또는 오른쪽 테이블의 레코드가 반환됩니다. Full은 왼쪽과 오른쪽의 특성이 결합되어 있습니다.
내부 jion에는 이런 특수성이 없으므로 on과 where에 조건을 두고 반환되는 결과 집합은 동일합니다.
이 글에서는 where와 on의 차이점을 설명하고 있습니다. 더 자세한 내용은 PHP 중국어 홈페이지를 참고해주세요.
관련 프로모션 보도자료:
PHP에서 CSS 코드를 압축하는 방법에 대해PHP는 json을 수신하고 수신된 데이터를 데이터베이스에 삽입합니다.PHP MySql 페이징 예제위 내용은 SQL의 조건과 조건의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!