Różnica między połączeniem A połączeniem wewnętrznym

Oba te połączenia dadzą mi takie same wyniki:

SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK

Vs

SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK

Czy jest jakaś różnica między wypowiedziami w wykonaniu lub w inny sposób?

Czy różni się między różnymi implementacjami SQL?

Author: Palec, 2009-02-19

7 answers

Są funkcjonalnie równoważne, ale INNER JOIN mogą być nieco jaśniejsze do odczytania, zwłaszcza jeśli zapytanie zawiera inne typy połączeń (np. LEFT lub RIGHT lub CROSS).

 871
Author: palehorse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-01 16:35:04

Po prostu wpisanie JOIN domyślnie wykonuje INNER JOIN.

Dla wszystkich innych jedno zdjęcie jest czasem warte więcej niż setki słów:

Tutaj wpisz opis obrazka

Zdjęcie dzięki uprzejmości Code Project.


 661
Author: Damian Drygiel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-19 10:59:18

No, there is no difference, pure cukier składniowy.

 209
Author: Quassnoi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-19 14:48:41

INNER JOIN = JOIN :

INNER JOIN jest domyślną wartością , Jeśli nie podasz typu podczas używania słowa JOIN.

Możesz również użyć LEFT OUTER JOIN lub RIGHT OUTER JOIN, w którym to przypadku słowo OUTER jest opcjonalne, możesz też określić połączenie krzyżowe.

Lub

Dla połączenia wewnętrznego składnia jest następująca:

Wybierz ...
FROM TableA
[INNER] JOIN TableB

(innymi słowy, słowo kluczowe "wewnętrzne" to opcjonalne - wyniki są takie same with or without it)

 115
Author: net_prog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-30 10:41:27

Podobnie z OUTER JOINs, słowo {[2] } jest opcjonalne. To słowo kluczowe LEFT lub RIGHT sprawia, że JOIN jest "OUTER" JOIN.

Jednak z jakiegoś powodu zawsze używam "OUTER" jak w LEFT OUTER JOIN i nigdy LEFT JOIN, ale nigdy nie używam INNER JOIN, a raczej po prostu używam "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
 44
Author: Kristen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-19 10:57:15

Czy różni się między różnymi implementacjami SQL?

Tak, Microsoft Access nie pozwala tylko join. Wymaga inner join.

 41
Author: Michał Powaga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-19 10:57:53

Jak już mówią inne odpowiedzi, nie ma różnicy w twoim przykładzie.

Odpowiedni bit gramatyki jest udokumentowany tutaj

<join_type> ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
    JOIN

Pokazując, że wszystkie są opcjonalne. Strona dodatkowo wyjaśnia, że

INNER określa zwracane są wszystkie pasujące pary wierszy. Odrzuty niezrównane wiersze z obu tabel. Gdy Nie podano typu join, to jest wartością domyślną .

Gramatyka wskazuje również, że istnieje jeden czas, w którym na INNER jest wymagane. Podczas określania podpowiedzi przyłączenia.

Zobacz przykład poniżej

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;

Tutaj wpisz opis obrazka

 21
Author: Martin Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-02 16:38:33