Sự khác biệt giữa LEFT JOIN
và là LEFT OUTER JOIN
gì?
Sự khác biệt giữa LEFT JOIN
và là LEFT OUTER JOIN
gì?
Câu trả lời:
Theo tài liệu: TỪ (Transact-SQL) :
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Từ khóa OUTER
được đánh dấu là tùy chọn (nằm trong dấu ngoặc vuông). Trong trường hợp cụ thể này, cho dù bạn chỉ định OUTER
hay không không có sự khác biệt. Lưu ý rằng trong khi các yếu tố khác của join khoản cũng được đánh dấu là không bắt buộc, để lại chúng ra sẽ tạo sự khác biệt.
Chẳng hạn, toàn bộ phần loại của JOIN
mệnh đề là tùy chọn, trong trường hợp đó là mặc định INNER
nếu bạn chỉ định JOIN
. Nói cách khác, đây là hợp pháp:
SELECT *
FROM A JOIN B ON A.X = B.Y
Dưới đây là danh sách các cú pháp tương đương:
A LEFT JOIN B A LEFT OUTER JOIN B
A RIGHT JOIN B A RIGHT OUTER JOIN B
A FULL JOIN B A FULL OUTER JOIN B
A INNER JOIN B A JOIN B
Ngoài ra hãy xem câu trả lời tôi để lại cho câu hỏi SO khác này: SQL có tham gia so với nhiều bảng trên dòng TỪ không? .
INNER JOIN
bên phải và chỉ JOIN
bên trái trong danh sách tương đương?
JOIN
s.
Để trả lời câu hỏi của bạn , không có sự khác biệt giữa LEFT THAM GIA và LEFT OUTER THAM GIA, chúng giống hệt như đã nói ...
INNER THAM GIA - tìm nạp dữ liệu nếu có trong cả hai bảng.
THAM GIA NGOÀI có 3 loại:
LEFT OUTER JOIN
- tìm nạp dữ liệu nếu có trong bảng bên trái.RIGHT OUTER JOIN
- tìm nạp dữ liệu nếu có trong bảng bên phải.FULL OUTER JOIN
- tìm nạp dữ liệu nếu có trong một trong hai bảng.CROSS THAM GIA , như tên cho thấy, điều [n X m]
đó kết hợp mọi thứ với mọi thứ.
Tương tự như kịch bản trong đó chúng ta chỉ liệt kê các bảng để tham gia (trong FROM
mệnh đề của SELECT
câu lệnh), sử dụng dấu phẩy để phân tách chúng.
Những điểm cần lưu ý:
JOIN
thì theo mặc định nó là một INNER JOIN
.OUTER
tham gia phải được LEFT
| RIGHT
| FULL
bạn không thể nói một cách đơn giản OUTER JOIN
.OUTER
từ khóa và chỉ nói LEFT JOIN
hay RIGHT JOIN
hay FULL JOIN
.Đối với những người muốn trực quan hóa những điều này theo cách tốt hơn, vui lòng truy cập liên kết này: Giải thích trực quan về các tham gia SQL
CROSS JOIN
giống như FULL JOIN
?
Cross Join
và Full Outer Join
... theo một cách nào đó có vẻ tương tự nhau.
Sự khác biệt giữa tham gia trái và tham gia ngoài trái là gì?
Không có gì . LEFT JOIN
và LEFT OUTER JOIN
là tương đương.
OUTER
là tùy chọn.
Tôi là một DBA PostgreSQL, theo như tôi có thể hiểu sự khác biệt giữa sự khác biệt bên ngoài hoặc không tham gia bên ngoài là một chủ đề có thảo luận đáng kể trên internet. Cho đến hôm nay tôi chưa bao giờ thấy sự khác biệt giữa hai điều đó; Vì vậy, tôi đã đi xa hơn và tôi cố gắng tìm sự khác biệt giữa những người đó. Cuối cùng, tôi đọc toàn bộ tài liệu về nó và tôi đã tìm thấy câu trả lời cho điều này,
Vì vậy, nếu bạn xem tài liệu (ít nhất là trong PostgreSQL), bạn có thể tìm thấy cụm từ này:
Nói cách khác,
LEFT JOIN
và là LEFT OUTER JOIN
CÙNG
RIGHT JOIN
và là RIGHT OUTER JOIN
CÙNG
Tôi hy vọng nó có thể là một đóng góp cho những người vẫn đang cố gắng tìm câu trả lời.
Left Join
và Left Outer Join
là một và giống nhau . Cái trước là tốc ký cho cái sau. Điều tương tự có thể được nói về Right Join
và Right Outer Join
mối quan hệ. Các cuộc biểu tình sẽ minh họa sự bình đẳng. Các ví dụ hoạt động của từng truy vấn đã được cung cấp qua SQL Fiddle . Công cụ này sẽ cho phép thực hiện các thao tác truy vấn.
Được
Tham gia trái và Tham gia ngoài trái
Các kết quả
Phải tham gia và phải tham gia bên ngoài
Các kết quả
Tôi thấy dễ dàng hơn khi nghĩ về Joins theo thứ tự sau:
Cho đến khi tôi tìm ra mô hình đơn giản (tương đối) này, THAM GIA luôn là một nghệ thuật đen hơn một chút. Bây giờ họ có ý nghĩa hoàn hảo.
Hy vọng điều này sẽ giúp nhiều hơn nó nhầm lẫn.
Tại sao LEFT / RIGHT và LEFT OUTER / RIGHT OUTER giống nhau? Hãy giải thích tại sao từ vựng này. Hiểu rằng các phép nối LEFT và RIGHT là các trường hợp cụ thể của phép nối OUTER, và do đó không thể là bất cứ điều gì khác ngoài OUTER LEFT / OUTER RIGHT. Tham gia OUTER cũng được gọi là FULL OUTER trái ngược với tham gia TRÁI và PHẢI là kết quả THAM GIA của tham gia OUTER. Thật:
Table A | Table B Table A | Table B Table A | Table B Table A | Table B
1 | 5 1 | 1 1 | 1 1 | 1
2 | 1 2 | 2 2 | 2 2 | 2
3 | 6 3 | null 3 | null - | -
4 | 2 4 | null 4 | null - | -
null | 5 - | - null | 5
null | 6 - | - null | 6
OUTER JOIN (FULL) LEFT OUTER (partial) RIGHT OUTER (partial)
Bây giờ rõ ràng tại sao các hoạt động đó có bí danh, cũng như rõ ràng chỉ có 3 trường hợp tồn tại: INNER, OUTER, CROSS. Với hai trường hợp phụ cho OUTER. Từ vựng, cách giáo viên giải thích điều này, cũng như một số câu trả lời ở trên, thường làm cho có vẻ như có rất nhiều loại tham gia khác nhau. Nhưng nó thực sự rất đơn giản.
JOIN
ngụ ý INNER JOIN
" phù hợp với lý do của bạn cho vocab tham gia bên ngoài?
Để trả lời câu hỏi của bạn
Trong Sql Server, tham gia cú pháp OUTER là tùy chọn
Nó được đề cập trong bài viết msDN: https://msdn.microsoft.com/en-us/l Library / ms177634 (v = sql.130) .aspx
Vì vậy, danh sách sau đây cho thấy tham gia các cú pháp tương đương có và không có OUTER
LEFT OUTER JOIN => LEFT JOIN
RIGHT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN
Các cú pháp tương đương khác
INNER JOIN => JOIN
CROSS JOIN => ,
Rất khuyến nghị Dotnet Mob Artice: Tham gia vào Sql Server
C) Tham gia ngoài:
There are three type of outer join
1) Left Outer Join = Left Join
2) Right Outer Join = Right Join
3) Full Outer Join = Full Join
Hy vọng nó sẽ giúp.
Chủ yếu có ba loại THAM GIA
Bên ngoài: có ba loại
Tham gia chéo: tham gia mọi thứ với mọi thứ
Đường cú pháp, làm cho người đọc bình thường thấy rõ hơn rằng sự tham gia không phải là một bên trong.
Chỉ trong bối cảnh của câu hỏi này, tôi cũng muốn đăng cả hai toán tử 'ỨNG DỤNG':
THAM GIA :
THAM GIA THAM GIA = THAM GIA
THAM GIA
LEFT OUTER THAM GIA = THAM GIA TRÁI
RIGHT OUTER THAM GIA = RIGHT THAM GIA
FULL OUTER THAM GIA = FULL THAM GIA
THAM GIA
TỰ THAM GIA : Đây không chính xác là một loại tham gia riêng biệt. Điều này về cơ bản là nối một bảng với chính nó bằng một trong các phép nối trên. Nhưng tôi cảm thấy nó đáng được đề cập trong bối cảnh thảo luận THAM GIA vì bạn sẽ nghe thấy thuật ngữ này từ nhiều người trong cộng đồng Nhà phát triển SQL.
ÁP DỤNG :
https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/
https://sqlhints.com/2016/10/23/outer-apply-in-sql-server/
Ví dụ thực tế, khi nào nên sử dụng OUTER / CROSS ỨNG DỤNG trong SQL
Tôi thấy toán tử ỨNG DỤNG rất có lợi vì chúng cho hiệu năng tốt hơn so với việc phải thực hiện cùng một tính toán trong truy vấn con. Chúng cũng thay thế nhiều chức năng Phân tích trong các phiên bản SQL Server cũ hơn. Đó là lý do tại sao tôi tin rằng sau khi cảm thấy thoải mái với THAM GIA, một nhà phát triển SQL nên cố gắng tìm hiểu các toán tử ỨNG DỤNG tiếp theo.
OUTER
từ khóa là tùy chọn.