이 두 조인 모두 나에게 동일한 결과를 줄 것입니다.
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
vs
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
성과 또는 그 밖의 진술 사이에 차이점이 있습니까?
서로 다른가요? SQL 구현 있습니까?
이 두 조인 모두 나에게 동일한 결과를 줄 것입니다.
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
이이 정의에 해당 한다고 믿는다 .
INNER
않습니다 되지 읽기 쿼리가 쉽게합니다. 내가 아는 한, 여기에 대한 답변으로 해결되지 않았다면 JOIN
의미 LEFT JOIN
가 있습니다.
다른 SQL 구현간에 차이가 있습니까?
예, Microsoft Access 에서는을 (를) 허용하지 않습니다 join
. 필요합니다 inner join
.
와 마찬가지로 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;