Sự khác biệt giữa LEFT JOINvà là LEFT OUTER JOINgì?
Sự khác biệt giữa LEFT JOINvà là LEFT OUTER JOINgì?
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 OUTERhay 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 JOINmệnh đề là tùy chọn, trong trường hợp đó là mặc định INNERnế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 JOINbên phải và chỉ JOINbên trái trong danh sách tương đương?
JOINs.
Để 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 FROMmệnh đề của SELECTcâu lệnh), sử dụng dấu phẩy để phân tách chúng.
Những điểm cần lưu ý:
JOINthì theo mặc định nó là một INNER JOIN.OUTERtham gia phải được LEFT| RIGHT| FULLbạn không thể nói một cách đơn giản OUTER JOIN.OUTERtừ khóa và chỉ nói LEFT JOINhay RIGHT JOINhay 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 JOINgiống như FULL JOIN?
Cross Joinvà 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 JOINvà LEFT OUTER JOINlà tương đương.
OUTERlà 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 JOINvà là LEFT OUTER JOINCÙNG
RIGHT JOINvà là RIGHT OUTER JOINCÙ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 Joinvà Left Outer Joinlà 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 Joinvà Right Outer Joinmố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.
JOINngụ ý 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.
OUTERtừ khóa là tùy chọn.