mysql 레프트 - INNER JOIN, LEFT JOIN, RIGHT JOIN과 FULL JOIN의 차이점은 무엇입니까?




조인 예제 (4)

INNER JOIN 은 외래 키를 기반으로 두 테이블간에 공통적 인 모든 레코드를 가져옵니다.

LEFT JOIN 은 LEFT 링크 된 테이블에서 모든 레코드를 가져 오지만 RIGHT 테이블에서 일부 컬럼을 선택한 경우 관련 레코드가 없으면이 컬럼에는 NULL이 포함됩니다

RIGHT JOIN 은 위와 같지만 RIGHT 테이블의 모든 레코드를 가져옵니다.

FULL JOIN 은 두 테이블의 모든 레코드를 가져오고 관련 레코드가 반대 테이블에없는 열에 NULL을 넣습니다.

이 질문에는 이미 답변이 있습니다.

MySQL의 INNER JOIN , LEFT JOIN , RIGHT JOINFULL JOIN 의 차이점은 무엇입니까?


SQL JOIN 절은 두 개 이상의 테이블의 행을 공통 필드를 기준으로 결합하는 데 사용됩니다.

SQL에서 사용할 수있는 조인의 유형에는 여러 가지가 있습니다.

INNER JOIN : 두 테이블에 일치하는 것이 있으면 행을 반환합니다.

LEFT JOIN : 오른쪽 표에 일치하는 항목이 없더라도 왼쪽 표의 모든 행을 반환합니다.

RIGHT JOIN : 왼쪽 테이블에 일치하는 것이 없더라도 오른쪽 테이블에서 모든 행을 반환합니다.

FULL JOIN : 왼쪽 및 오른쪽 외부 조인의 결과를 결합합니다.

조인 된 테이블에는 두 테이블의 모든 레코드가 포함되며 양쪽에 일치하지 않는 항목에 대한 NULL을 채 웁니다.

SELF JOIN : 테이블이 두 개의 테이블 인 것처럼 테이블을 자체에 조인하는 데 사용되며, SQL 문에서 적어도 하나 이상의 테이블의 이름을 임시로 변경합니다.

CARTESIAN JOIN : 두 개 이상의 조인 된 테이블에서 레코드 세트의 카디 전 곱을 리턴합니다.

우리는 각각의 처음 네 조인을 자세히 취할 수 있습니다 :

우리는 다음과 같은 두 개의 테이블을 가지고 있습니다.

표 A

id  firstName                  lastName
.......................................
1   arun                        prasanth                 
2   ann                         antony                   
3   sruthy                      abc                      
6   new                         abc                                           

TableB

id2 age Place
................
1   24  kerala
2   24  usa
3   25  ekm
5   24  chennai

.................................................. ..................

내부 결합

참고 : 두 테이블, 즉 TableA 및 TableB에서 공통적으로 사용하는 행의 교차점을 제공합니다.

통사론

SELECT table1.column1, table2.column2...
  FROM table1
 INNER JOIN table2
    ON table1.common_field = table2.common_field;

샘플 표에 적용하십시오.

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 INNER JOIN TableB
    ON TableA.id = TableB.id2;

결과가 될 것입니다.

firstName       lastName       age  Place
..............................................
arun            prasanth        24  kerala
ann             antony          24  usa
sruthy          abc             25  ekm

LEFT JOIN

: TableA의 모든 선택된 행과 TableB의 공통 선택된 행을 제공합니다.

통사론

SELECT table1.column1, table2.column2...
  FROM table1
  LEFT JOIN table2
    ON table1.common_field = table2.common_field;

샘플 표에 적용하십시오.

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  LEFT JOIN TableB
    ON TableA.id = TableB.id2;

결과

firstName                   lastName                    age   Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL

오른쪽 조인

참고 : TableB에서 선택된 모든 행과 TableA에서 공통적으로 선택된 행을 모두 제공합니다.

통사론

SELECT table1.column1, table2.column2...
  FROM table1
 RIGHT JOIN table2
    ON table1.common_field = table2.common_field;

샘플 표에 적용하십시오.

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 RIGHT JOIN TableB
    ON TableA.id = TableB.id2;

결과

firstName                   lastName                    age     Place
...............................................................................
arun                        prasanth                    24     kerala
ann                         antony                      24     usa
sruthy                      abc                         25     ekm
NULL                        NULL                        24     chennai

전체 연결

참고 : 두 테이블 모두에서 선택된 값을 모두 반환합니다.

통사론

SELECT table1.column1, table2.column2...
  FROM table1
  FULL JOIN table2
    ON table1.common_field = table2.common_field;

샘플 표에 적용하십시오.

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  FULL JOIN TableB
    ON TableA.id = TableB.id2;

결과

firstName                   lastName                    age    Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL
NULL                        NULL                        24    chennai

흥미로운 사실

INNER 조인의 경우 순서는 중요하지 않습니다.

(LEFT, RIGHT 또는 FULL) OUTER 조인의 경우, order matter

Link 하면 조인 순서에 대한 흥미로운 세부 정보를 얻을 수 있습니다.



그것은해야한다:

DELETE zpost 
FROM zpost 
INNER JOIN zcomment ON (zpost.zpostid = zcomment.zpostid)
WHERE zcomment.icomment = "first"       




mysql sql join inner-join outer-join