이 두 조인 모두 나에게 동일한 결과를 줄 것입니다.
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
vs
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
성과 또는 그 밖의 진술 사이에 차이점이 있습니까?
서로 다른가요? SQL 구현 있습니까?
답변
그것들은 기능적으로 동일하지만 INNER JOIN
특히 쿼리에 다른 조인 유형 ( LEFT
또는 RIGHT
또는 또는 CROSS
)이 포함되어있는 경우 읽기가 더 명확 할 수 있습니다 .
답변
아니, 순수한 구문 설탕 차이가 없습니다 .
답변
내부 가입 = 가입
지정하지 않으면 INNER JOIN이 기본값입니다. 이라는 단어를 사용할 때 유형을 입니다.
LEFT OUTER JOIN 또는 RIGHT OUTER JOIN을 사용할 수도 있습니다.이 경우 OUTER라는 단어는 선택 사항이거나 CROSS JOIN을 지정할 수 있습니다.
또는
내부 조인의 구문은 다음과 같습니다.
고르다 …
TableA에서
[INNER] 조인즉, “INNER”키워드는 선택 사항입니다 . 결과는 키워드의 유무에 관계없이 동일합니다.
답변
답변
와 마찬가지로 OUTER JOINs
단어 "OUTER"
는 선택 사항입니다. 그것은의 LEFT
또는 RIGHT
차종 키워드 JOIN
을 "OUTER" JOIN
.
그러나 어떤 이유로 나는 항상 사용 "OUTER"
과 같이 LEFT OUTER JOIN
결코 LEFT JOIN
,하지만 난 절대 사용하지 INNER JOIN
않고, 난 그냥 사용합니다 "JOIN"
:
SELECT ColA, ColB, ...
FROM MyTable AS T1
JOIN MyOtherTable AS T2
ON T2.ID = T1.ID
LEFT OUTER JOIN MyOptionalTable AS T3
ON T3.ID = T1.ID
답변
다른 답변에서 이미 언급했듯이 귀하의 예에는 차이가 없습니다.
관련 문법이 여기 에 문서화되어 있습니다.
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
모두 선택 사항임을 보여줍니다. 이 페이지는 또한
INNER
일치하는 모든 행 쌍이 리턴되도록 지정합니다. 두 테이블에서 일치하지 않는 행을 버립니다.조인 유형을 지정하지 않으면 이것이 기본값 입니다.
문법은 또한 INNER
되어 있지만이 필요합니다. 조인 힌트를 지정할 때.
아래 예를 참조하십시오
CREATE TABLE T1(X INT);
CREATE TABLE T2(Y INT);
SELECT *
FROM T1
LOOP JOIN T2
ON X = Y;
SELECT *
FROM T1
INNER LOOP JOIN T2
ON X = Y;