Jaka jest różnica między wewnętrznym połączeniem, lewym połączeniem, prawym połączeniem i pełnym połączeniem? [duplikat]
Jaka jest różnica między INNER JOIN
, LEFT JOIN
, RIGHT JOIN
oraz FULL JOIN
w MySQL?
3 answers
Przeczytanie tego oryginalnego artykułu na temat projekt kodu bardzo ci pomoże: wizualna reprezentacja łączników SQL .
Zobacz też ten post: SQL SERVER-Lepsza wydajność-LEFT JOIN czy NOT IN?.
Znajdź oryginalną w: różnica między JOIN i OUTER JOIN w MySQL .
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
2021-02-05 06:45:25
Klauzula SQL JOIN służy do łączenia wierszy z dwóch lub więcej tabel, oparte na wspólnym polu między nimi.
W SQL dostępne są różne typy złączy:
INNER JOIN : zwraca wiersze, gdy w obu tabelach jest dopasowanie.
LEFT JOIN: zwraca wszystkie wiersze z lewej tabeli, nawet jeśli w prawej tabeli nie ma dopasowania.
RIGHT JOIN : zwraca wszystkie wiersze z prawej tabeli, nawet jeśli brak dopasowań w lewej tabeli.
FULL JOIN : łączy wyniki zarówno lewego, jak i prawego złączenia zewnętrznego.
Dołączona tabela będzie zawierać wszystkie rekordy z obu tabel i wypełnić NULL dla brakujących dopasowań po obu stronach.
SELF JOIN: służy do łączenia tabeli z sobą tak, jakby tabela była dwiema tabelami, tymczasowo zmieniając nazwę co najmniej jednej tabeli w instrukcji SQL.
Złącze kartezjańskie : Zwraca iloczyn kartezjański zestawy rekordów z dwóch lub więcej połączonych tabel.
Możemy wziąć każde pierwsze cztery złącza w szczegółach:
Mamy dwie tabele z następującymi wartościami.
TableA
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
....................................................................
POŁĄCZENIE WEWNĘTRZNE
Uwaga : podaje przecięcie dwóch tabel, tzn. wierszy, które mają wspólne w TableA i TableB
Składnia
SELECT table1.column1, table2.column2...
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;
Zastosuj go w naszej przykładowej tabeli:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
INNER JOIN TableB
ON TableA.id = TableB.id2;
Wynik Będzie
firstName lastName age Place
..............................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
LEFT JOIN
Notatka : poda wszystkie wybrane wiersze w TableA oraz wszystkie wspólne wybrane wiersze w TableB.
Składnia
SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;
Zastosuj go w naszej przykładowej tabeli:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
LEFT JOIN TableB
ON TableA.id = TableB.id2;
Wynik
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
new abc NULL NULL
RIGHT JOIN
Notatka : poda wszystkie zaznaczone wiersze w TableB, plus wszelkie wspólne wybrane wiersze w tabeli.
Składnia
SELECT table1.column1, table2.column2...
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;
Zastosuj go w naszej przykładowej tabeli:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
RIGHT JOIN TableB
ON TableA.id = TableB.id2;
Wynik
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
NULL NULL 24 chennai
FULL JOIN
Notatka: zwróci wszystkie wybrane wartości z obu tabel.
Składnia
SELECT table1.column1, table2.column2...
FROM table1
FULL JOIN table2
ON table1.common_field = table2.common_field;
Zastosuj go w naszej przykładowej tabeli:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
FULL JOIN TableB
ON TableA.id = TableB.id2;
Wynik
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
new abc NULL NULL
NULL NULL 24 chennai
Ciekawostka
Dla wewnętrznych połączeń kolejność nie ma znaczenia
For (lewy, prawy lub pełny) Złącza zewnętrzne, sprawa porządkowa
Lepiej to sprawdzić Link znajdziesz w nim interesujące informacje na temat zamówienia połączenia
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-09-11 08:36:01
INNER JOIN pobiera wszystkie rekordy, które są wspólne dla obu tabel na podstawie dostarczonej klauzuli ON.
LEFT JOIN pobiera wszystkie rekordy z lewego linkowanego i powiązanego rekordu z prawej tabeli, ale jeśli wybrałeś kilka kolumn z prawej tabeli, jeśli nie ma powiązanych rekordów, kolumny te będą zawierać NULL.
RIGHT JOIN jest podobny do powyższego, ale pobiera wszystkie rekordy w odpowiedniej tabeli.
FULL JOIN pobiera wszystkie rekordy z obie tabele i umieszcza NULL w kolumnach, w których powiązane rekordy nie istnieją w przeciwnej tabeli.
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
2019-12-19 09:45:02