이 두 조인 모두 나에게 동일한 결과를 줄 것입니다.
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;