Hướng dẫn do we have full join in mysql? - chúng ta có tham gia đầy đủ vào mysql không?

Câu trả lời mà Pablo Santa Cruz đưa ra là chính xác; Tuy nhiên, trong trường hợp bất kỳ ai vấp ngã trên trang này và muốn làm rõ hơn, đây là một sự cố chi tiết.

Bảng ví dụ

Giả sử chúng ta có các bảng sau:

-- t1
id  name
1   Tim
2   Marta

-- t2
id  name
1   Tim
3   Katarina

Nội tâm tham gia

Một tham gia bên trong, như thế này:

SELECT *
FROM `t1`
INNER JOIN `t2` ON `t1`.`id` = `t2`.`id`;

Sẽ chỉ nhận được chúng tôi các bản ghi xuất hiện trong cả hai bảng, như thế này:

1 Tim  1 Tim

Tham gia bên trong không có hướng (như trái hoặc phải) vì chúng rõ ràng là hai chiều - chúng tôi yêu cầu một trận đấu ở cả hai bên.

Tham gia bên ngoài

Mặt khác, tham gia bên ngoài là để tìm các hồ sơ có thể không có trận đấu trong bảng khác. Như vậy, bạn phải chỉ định phía nào của tham gia được phép có một bản ghi bị thiếu.which side of the join is allowed to have a missing record.

SELECT *
FROM `t1`
INNER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
7 và
SELECT *
FROM `t1`
INNER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
8 là tốc ký cho
SELECT *
FROM `t1`
INNER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
9 và
1 Tim  1 Tim
0; Tôi sẽ sử dụng tên đầy đủ của họ dưới đây để củng cố khái niệm tham gia bên ngoài so với các kết nối bên trong.

Bên ngoài tham gia

Tham gia bên ngoài bên trái, như thế này:

SELECT *
FROM `t1`
LEFT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`;

... sẽ nhận được tất cả các hồ sơ từ bảng bên trái bất kể họ có phù hợp trong bảng bên phải hay không, như thế này:

1 Tim   1    Tim
2 Marta NULL NULL

Bên ngoài tham gia

Tham gia bên ngoài bên phải, như thế này:

SELECT *
FROM `t1`
RIGHT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`;

... sẽ nhận được tất cả các hồ sơ từ bảng bên phải bất kể họ có phù hợp trong bảng bên trái hay không, như thế này:

1    Tim   1  Tim
NULL NULL  3  Katarina

Tham gia đầy đủ bên ngoài

Một sự tham gia bên ngoài đầy đủ sẽ cung cấp cho chúng tôi tất cả các hồ sơ từ cả hai bảng, cho dù chúng có phù hợp trong bảng khác hay không, với các null ở cả hai bên mà không có khớp. Kết quả sẽ trông như thế này:

1    Tim   1    Tim
2    Marta NULL NULL
NULL NULL  3    Katarina

Tuy nhiên, như Pablo Santa Cruz đã chỉ ra, MySQL không hỗ trợ điều này. Chúng ta có thể mô phỏng nó bằng cách thực hiện một liên minh tham gia bên trái và tham gia bên phải, như thế này:

SELECT *
FROM `t1`
LEFT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`

UNION

SELECT *
FROM `t1`
RIGHT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`;

Bạn có thể nghĩ về một

1 Tim  1 Tim
1 có nghĩa là "chạy cả hai truy vấn này, sau đó xếp các kết quả lên trên nhau"; Một số hàng sẽ đến từ truy vấn đầu tiên và một số từ thứ hai.

Cần lưu ý rằng A

1 Tim  1 Tim
1 trong MySQL sẽ loại bỏ các bản sao chính xác: Tim sẽ xuất hiện trong cả hai truy vấn ở đây, nhưng kết quả của
1 Tim  1 Tim
1 chỉ liệt kê anh ta một lần. Đồng nghiệp Guru cơ sở dữ liệu của tôi cảm thấy rằng hành vi này không nên dựa vào. Vì vậy, để rõ ràng hơn về nó, chúng tôi có thể thêm một điều khoản
1 Tim  1 Tim
4 vào truy vấn thứ hai:

SELECT *
FROM `t1`
LEFT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`

UNION

SELECT *
FROM `t1`
RIGHT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`
WHERE `t1`.`id` IS NULL;

Mặt khác, nếu bạn muốn xem các bản sao vì một số lý do, bạn có thể sử dụng

1 Tim  1 Tim
5.wanted to see duplicates for some reason, you could use
1 Tim  1 Tim
5.

Trong hướng dẫn này, chúng tôi sẽ nghiên cứu từ khóa MySQL

1 Tim  1 Tim
6 (còn được gọi là
1 Tim  1 Tim
7). Một lần tham gia được sử dụng để kết hợp hai hoặc nhiều bảng bằng cách sử dụng một cột thường có liên quan giữa chúng.

Có nhiều loại tham gia khác nhau trong MySQL. Họ đang -

  • Tham gia bên trong
  • Trái (bên ngoài) Tham gia
  • Phải (bên ngoài) tham gia
  • Đầy đủ (bên ngoài) tham gia

Trong bài viết này, chúng tôi sẽ tập trung vào tham gia đầy đủ, đôi khi còn được gọi là tham gia bên ngoài đầy đủ và cách sử dụng từ khóa MySQL

1 Tim  1 Tim
6 để tham gia đầy đủ.

Lưu ý: Một số hệ thống SQL có thể không sử dụng cả hai từ khóa -

1 Tim  1 Tim
6 hoặc
1 Tim  1 Tim
7. Trong trường hợp đó, sử dụng từ khóa khác. Cũng lưu ý rằng Mariadb hoàn toàn không hỗ trợ từ khóa ____ ____ 26/________ 27. Nhưng không phải lo lắng, chúng ta sẽ thấy vào cuối bài đăng này về cách thực hiện tham gia đầy đủ ở Mariadb.
Some SQL systems may not use both the keywords –
1 Tim  1 Tim
6 or
1 Tim  1 Tim
7. In that case, use the other keyword. Also note that MariaDB does not support the
1 Tim  1 Tim
6/
1 Tim  1 Tim
7 keywords at all. But no worries, we will see towards the end of this post on how to make a full join in MariaDB.


Tham gia đầy đủ là gì?

Từ khóa

1 Tim  1 Tim
6 hoặc
1 Tim  1 Tim
7 được sử dụng để chọn tất cả các bản ghi từ bảng bên trái và bảng bên phải. Nó kết hợp cả hai bảng thành một kết quả và trả lại cho người dùng. Lưu ý rằng MySQL
1 Tim  1 Tim
6 được biết là tạo các bộ dữ liệu lớn. Nó hoạt động giống như hoạt động của công đoàn mà bạn đã thấy trong lý thuyết tập hợp trong toán học. Một sự tham gia đầy đủ về cơ bản là một liên minh của một tham gia bên trái với một tham gia bên phải.

Hãy để chúng tôi chứng minh

1 Tim  1 Tim
6 bằng sơ đồ.

Hướng dẫn do we have full join in mysql? - chúng ta có tham gia đầy đủ vào mysql không?
Sơ đồ tham gia đầy đủ

Khi bạn có thể lượm lặt được từ sơ đồ, tất cả các bản ghi từ cả hai bảng được chọn. Nếu Bảng 1 không có các giá trị chung là Bảng2 thì các bản ghi đó được điền với NULL hoặc được giữ trống tùy thuộc vào hệ thống SQL bạn đang sử dụng.


Cú pháp của tham gia đầy đủ MySQL

SELECT *
FROM `t1`
INNER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
0

Ở đây ‘T1, và‘ T2, là những bí danh tùy chọn mà bạn có thể có cho các tên bảng. Chúng ta sẽ thấy nhiều hơn về nó trong các ví dụ. Các cột được đề cập sau từ khóa trên là các cột phổ biến liên quan sử dụng kết nối đầy đủ sẽ được thực hiện. Lưu ý rằng nếu bạn muốn sử dụng

1 Tim  1 Tim
7 thì chỉ cần thay thế từ khóa
1 Tim  1 Tim
6 trong cú pháp trên bằng từ khóa
1 Tim  1 Tim
7.


Hãy xem xét bảng học sinh dưới đây và bảng điểm.

Hướng dẫn do we have full join in mysql? - chúng ta có tham gia đầy đủ vào mysql không?
Bảng học sinh

Hướng dẫn do we have full join in mysql? - chúng ta có tham gia đầy đủ vào mysql không?
Bảng điểm

Bảng sinh viên lưu trữ các chi tiết của học sinh trong mỗi hàng. Bảng Marks lưu trữ mọi học sinh đánh dấu bằng tiếng Anh, toán học và khoa học trong số 100.

Ví dụ đơn giản về sự tham gia đầy đủ của MySQL

Bây giờ chúng ta hãy tham gia đầy đủ trên bảng sinh viên và bảng điểm để chúng ta thấy tất cả các bản ghi từ cả hai bảng.

Bước đầu tiên là tìm các cột thường liên quan giữa hai bảng. Trong trường hợp này, họ là ID từ bảng sinh viên và sinh viên từ bảng Marks. Bây giờ chúng ta hãy viết một truy vấn cho tham gia đầy đủ bằng cách sử dụng câu lệnh

1 Tim   1    Tim
2 Marta NULL NULL
0.

SELECT *
FROM `t1`
INNER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
1

Và đầu ra là -

Hướng dẫn do we have full join in mysql? - chúng ta có tham gia đầy đủ vào mysql không?

Chúng tôi đã sử dụng từ khóa

1 Tim  1 Tim
7 trước đó. Nếu bạn muốn sử dụng từ khóa
1 Tim  1 Tim
6 thì truy vấn là -

SELECT *
FROM `t1`
INNER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
2

Và đầu ra vẫn giống như được thấy dưới đây.

Hướng dẫn do we have full join in mysql? - chúng ta có tham gia đầy đủ vào mysql không?

Trao đổi hai bên bàn

Bạn nghĩ điều gì sẽ xảy ra nếu chúng ta trao đổi các cạnh của bảng học sinh và bảng điểm? Giống như điều gì sẽ xảy ra nếu chúng ta làm cho bảng đánh dấu là bàn bên trái và bảng học sinh làm bảng bên phải? Đầu ra không thay đổi! Hãy cho chúng tôi xem một ví dụ về điều này.

SELECT *
FROM `t1`
INNER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
3

Và đầu ra là -

Hướng dẫn do we have full join in mysql? - chúng ta có tham gia đầy đủ vào mysql không?

Chúng tôi đã sử dụng từ khóa 1 Tim 1 Tim 7 trước đó. Nếu bạn muốn sử dụng từ khóa 1 Tim 1 Tim 6 thì truy vấn là -

Và đầu ra vẫn giống như được thấy dưới đây.

SELECT *
FROM `t1`
INNER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
4

Và đầu ra là -

Hướng dẫn do we have full join in mysql? - chúng ta có tham gia đầy đủ vào mysql không?

Chúng tôi đã sử dụng từ khóa

1 Tim  1 Tim
7 trước đó. Nếu bạn muốn sử dụng từ khóa
1 Tim  1 Tim
6 thì truy vấn là -

SELECT *
FROM `t1`
INNER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
5

Và đầu ra là -

Hướng dẫn do we have full join in mysql? - chúng ta có tham gia đầy đủ vào mysql không?


Chúng tôi đã sử dụng từ khóa 1 Tim 1 Tim 7 trước đó. Nếu bạn muốn sử dụng từ khóa 1 Tim 1 Tim 6 thì truy vấn là -

Và đầu ra vẫn giống như được thấy dưới đây.

SELECT *
FROM `t1`
INNER JOIN `t2` ON `t1`.`id` = `t2`.`id`;
6

Và đầu ra trên Mariadb là -

Hướng dẫn do we have full join in mysql? - chúng ta có tham gia đầy đủ vào mysql không?

Yay! Chúng tôi có thể thực hiện tham gia đầy đủ trong Mariadb bằng cách sử dụng tham gia bên trái và tham gia bên phải kết hợp cùng với từ khóa

1 Tim  1 Tim
1.


Sự kết luận

1 Tim  1 Tim
6 là một hoạt động cực kỳ quan trọng khi nói đến MySQL. Tham gia hai bảng và hiển thị dữ liệu đó cung cấp những hiểu biết hữu ích về dữ liệu. Tôi rất khuyên bạn nên thực hành một số ví dụ về
1 Tim  1 Tim
6.

Có tham gia đầy đủ trong MySQL không?

Nếu cơ sở dữ liệu của bạn không hỗ trợ tham gia đầy đủ (MySQL không hỗ trợ tham gia đầy đủ), thì bạn có thể sử dụng mệnh đề Union All để kết hợp hai lần tham gia này như hình dưới đây.MySQL does not support FULL JOIN), then you can use UNION ALL clause to combine these two JOINS as shown below.

Tại sao tham gia đầy đủ không hoạt động trong MySQL?

MySQL không hỗ trợ tham gia đầy đủ, vì vậy bạn phải kết hợp tham gia, công đoàn và tham gia để có được một tương đương.Nó cung cấp kết quả của một công đoàn B. Nó trả về tất cả các hồ sơ từ cả hai bảng.Những cột tồn tại chỉ trong một bảng sẽ chứa null trong bảng đối diện., so you have to combine JOIN, UNION and LEFT JOIN to get an equivalent. It gives the results of A union B. It returns all records from both tables. Those columns which exist in only one table will contain NULL in the opposite table.

Chúng ta có thể tham gia đầy đủ 2 bảng trong SQL không?

Một truy vấn SQL có thể tham gia nhiều bảng.Đối với mỗi bảng mới, một điều kiện tham gia thêm được thêm vào.Đa bàn tham gia hoạt động với các truy vấn chọn, cập nhật và xóa.. For each new table an extra JOIN condition is added. Multi-Table JOINs work with SELECT, UPDATE, and DELETE queries.

Có một tham gia bên trong đầy đủ?

Sự khác biệt giữa tham gia bên trong và tham gia đầy đủ.Kết nối bên trong chỉ trả về các hàng phù hợp giữa cả hai bảng, các hàng không phù hợp được loại bỏ.Tham gia toàn bộ hoặc tham gia bên ngoài đầy đủ Trả về tất cả các hàng từ cả hai bảng (bảng trái và phải), bao gồm các hàng không phù hợp từ cả hai bảng.Inner join returns only the matching rows between both the tables, non-matching rows are eliminated. Full Join or Full Outer Join returns all rows from both the tables (left & right tables), including non-matching rows from both the tables.