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
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.1 Tim 1 Tim
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 -
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
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ơ đồ.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.
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`;
1Và đầu ra là -
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`;
2Và đầu ra vẫn giống như được thấy dưới đây.
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`;
3Và đầu ra là -
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à -
1 Tim 1 Tim
1 Tim 1 Tim
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`;
4Và đầu ra là -
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`;
5Và đầu ra là -
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à -
1 Tim 1 Tim
1 Tim 1 Tim
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`;
6Và đầu ra trên Mariadb là -
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.