SQL 문에서 on과 where 사이의 사용법 차이에 대한 설명

巴扎黑
풀어 주다: 2019-02-23 15:40:07
원래의
7041명이 탐색했습니다.

이 블로그는 인터넷을 기준으로 어느 글이 원본인지 알 수 없어 이렇게 선언합니다.

Database 두 개 이상의 테이블을 연결하여 레코드를 반환할 경우 중간 임시 테이블이 생성되며, 이 임시 테이블이 사용자에게 반환됩니다.

추천 mysql 동영상 튜토리얼: "mysql tutorial"

left jion 사용 시 on 조건과 where 조건의 차이는 다음과 같습니다.

1 on 조건은 임시 테이블을 생성할 때 사용하는 조건으로, 상관 없습니다. on의 조건이 true인지 아닌지에 관계없이 왼쪽 테이블의 레코드가 반환됩니다.

2. where 조건은 임시 테이블이 생성된 후 임시 테이블을 필터링하는 조건입니다. 이때 Left Join의 의미는 없습니다(왼쪽 테이블의 레코드가 반환되어야 함). 조건이 true가 아닌 경우 모두 필터링됩니다.

두 개의 테이블이 있다고 가정합니다.

테이블 1: tab2

id

size

1

10

2

20

3

30

표 2: tab2

size

name

10

AAA

20

BBB

20

CCC


두 개의 SQL:

1、select * form tab1 left join tab2 on (tab1.size =
tab2.size) where tab2.name=’AAA’
2、select * form tab1 left join tab2 on (tab1.size =
tab2.size and tab2.name=’AAA’)
로그인 후 복사

첫 번째 SQL 프로세스:

1. 조건: tab1.size = tab2.sizetab1.idtab1.sizetab2.sizetab2.name11010AAA22020BBB22020CCC330(null)(null)||2 그런 다음 중간 테이블에서 where 조건을 필터링합니다(현재 true가 아닌 행은 필터링됩니다). ): tab2.name='AAA'tab1.idtab1.sizetab2.sizetab2.name11010AAA

두 번째 SQL 프로세스:

1 조건에 따른 중간 테이블: tab1.size = tab2.size 및 tab2 . name='AAA'(조건이 true가 아닐 경우 왼쪽 테이블의 레코드도 반환됨)tab1.idtab1.sizetab2.sizetab2.name11010AAA220(null)(null)330(null)(null)

실제로 위의 결과는 왼쪽 조인, 오른쪽 조인 및 전체 조인의 특수성입니다. on의 조건이 true인지 여부에 관계없이 의 레코드를 반환합니다. left 또는 right table, full에는 왼쪽과 오른쪽 속성의 결합이 있습니다. 내부 jion에는 이러한 특수성이 없으므로 조건은 on 및 where에 배치되며 반환된 결과 집합은 동일합니다

요약:

일반적으로 where 문은 NULL을 필터링합니다. 행 수(조건이 false인 행 수) 따라서 where 문과 on 문의 결과는 FULL JOIN 문에서 가장 다릅니다. JOIN/INNER JOIN 문에서는 차이가 없습니다. LEFT JOIN과 RIGHT JOIN의 차이는 표현식과 데이터에 따라 다릅니다. 테이블.

위 내용은 SQL 문에서 on과 where 사이의 사용법 차이에 대한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!