이 블로그는 인터넷을 기준으로 어느 글이 원본인지 알 수 없어 이렇게 선언합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!