Hướng dẫn how to full join two tables in mysql - cách tham gia đầy đủ hai bảng trong mysql

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.

Show

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.

1 Tim  1 Tim
1 và
1 Tim  1 Tim
2 là tốc ký cho
1 Tim  1 Tim
3 và
1 Tim  1 Tim
4; 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
5 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 một

1 Tim  1 Tim
5 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
5 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
8 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
9.wanted to see duplicates for some reason, you could use
1 Tim  1 Tim
9.

Hướng dẫn how to full join two tables in mysql - cách tham gia đầy đủ hai bảng trong mysql

Trong phần trước của loạt MySQL này, tôi đã chứng minh cách bạn có thể tìm nạp dữ liệu bằng các điều khoản MySQL. Trong phần này, chúng ta sẽ tìm hiểu về hàm nối trong MySQL, tại sao chúng được sử dụng và cách sử dụng chúng. Bắt đầu nào.

Làm cách nào tôi có thể liên kết hai bảng trong mysql

MySQL tham gia cho phép bạn truy cập dữ liệu từ nhiều bảng. Tham gia MySQL được thực hiện bất cứ khi nào hai hoặc nhiều bảng được tham gia trong một câu lệnh SQL. Các tham gia MySQL bao gồm: Tham gia bên trong MySQL (còn được gọi là tham gia đơn giản), tham gia bên ngoài bên trái MySQL (còn được gọi là tham gia bên trái, nó trả về các bản ghi phù hợp từ bảng bên trái), tham gia bên phải (điều này trả về các bản ghi phù hợp từ Bảng bên phải) và tham gia đầy đủ (trả về bản ghi phù hợp từ tất cả các bảng). Sử dụng các tham gia MySQL, bạn sẽ có thể tham gia nhiều hơn hai bảng.

Trong MySQL, tham gia bên trong là tham gia mặc định. Trên các từ khóa nhất định tại thời điểm đó, nó chọn tất cả các hàng từ cả hai bảng, miễn là có một tọa độ giữa các cột trong cả hai bảng.

Không giống như SQL, MySQL không coi tham gia bên ngoài là một loại tham gia riêng biệt. Để có được kết quả tương tự như tham gia bên ngoài, bạn cần tham gia tham gia bên ngoài bên trái và tham gia bên ngoài bên phải.

Có bao nhiêu bảng có thể được tham gia trong mysql

Theo tài liệu chính thức của MySQL 8.0, số lượng bảng tối đa trong câu lệnh tham gia là 61. Tuy nhiên, lưu ý rằng các câu lệnh tham gia có thể yêu cầu nhiều tài nguyên máy chủ khi số lượng bảng tăng. Nếu đây là trường hợp với truy vấn của bạn, tôi khuyên bạn nên chia nó thành nhiều truy vấn để giảm tải trên máy chủ.

Hãy để chúng tôi bắt đầu bằng cách thêm một bảng mới trong cơ sở dữ liệu của chúng tôi sẽ chứa thông báo cùng với ID người dùng đã gửi tin nhắn này, chúng tôi sẽ đặt tên cho nó tin nhắn. Lược đồ của bảng của chúng tôi là:

Tạo bảng `message` (

& nbsp; `id` int (11) không phải null,

& nbsp; `message` varchar (255) không phải null

)

Chúng tôi sẽ sử dụng cùng một chức năng selectData mà chúng tôi đã tạo trong tệp crud.php của chúng tôi. Bây giờ chúng ta hãy bắt đầu bằng cách tham gia hai bảng này. Bạn cũng có thể lấp đầy bảng của bạn để bạn có thể thực hành nó.selectdata function which we have created in our crud.php file. Now let us get started by joining these two tables. You can also fill your table so you can practice it.

Ngừng lãng phí thời gian vào máy chủ

Cloudways xử lý quản lý máy chủ cho bạn để bạn có thể tập trung vào việc tạo các ứng dụng tuyệt vời và giữ cho khách hàng của bạn hài lòng.

Tham gia bên trong

Bên trong tham gia tham gia bảng theo cách mà nó chỉ hiển thị những kết quả phù hợp với điều kiện được đưa ra và ẩn những người khác. Cấu trúc của các truy vấn nối bên trong là:

Chọn cột_name (S)

Từ Bảng 1

Tham gia bên trong TABLE2

Trên bảng1.column_name = Bảng2.column_name;

Tham gia bên trong và tham gia đơn giản cả hai đều giống nhau. Bạn cũng có thể viết truy vấn của mình như thế này:

Chọn cột_name (S)

Từ Bảng 1

Tham gia bên trong TABLE2

Trên bảng1.column_name = Bảng2.column_name;

Tham gia bên trong và tham gia đơn giản cả hai đều giống nhau. Bạn cũng có thể viết truy vấn của mình như thế này:

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

Tham gia Bảng 2CONCAT function is used to join two strings column in MySQL. Now open your index.php which we have created previously copy the following code in it.

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

Bây giờ chúng ta hãy lấy tên và thông báo từ cơ sở dữ liệu của chúng ta bằng cách sử dụng tham gia bên trong. Truy vấn sẽ như thế này

Hướng dẫn how to full join two tables in mysql - cách tham gia đầy đủ hai bảng trong mysql

Hàm Concat được sử dụng để nối hai cột chuỗi trong MySQL. Bây giờ hãy mở index.php mà chúng tôi đã tạo trước đó sao chép mã sau trong đó.messages is not null.

Khi bạn chạy trang này trên máy chủ lưu trữ web PHP của bạn, kết quả của bạn sẽ trông như thế này:

Như bạn có thể thấy rõ nó đã chỉ trả về những kết quả phù hợp với user_id và nơi tin nhắn không phải là null.

Chọn cột_name (S)

Từ Bảng 1

Tham gia bên trong TABLE2

Trên bảng1.column_name = Bảng2.column_name;

Tham gia bên trong và tham gia đơn giản cả hai đều giống nhau. Bạn cũng có thể viết truy vấn của mình như thế này:messages in our right table and myguests in our left table.

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

Tham gia Bảng 2$sql query with the above. When you run it, your result will be:

Hướng dẫn how to full join two tables in mysql - cách tham gia đầy đủ hai bảng trong mysql

Bây giờ chúng ta hãy lấy tên và thông báo từ cơ sở dữ liệu của chúng ta bằng cách sử dụng tham gia bên trong. Truy vấn sẽ như thế nàymessages table, you will see some IDs’ which won’t match any user ID’s that’s why this query returns null in name and email column where it won’t find any match in left column.

Hàm Concat được sử dụng để nối hai cột chuỗi trong MySQL. Bây giờ hãy mở index.php mà chúng tôi đã tạo trước đó sao chép mã sau trong đó.

Khi bạn chạy trang này trên máy chủ lưu trữ web PHP của bạn, kết quả của bạn sẽ trông như thế này:

Chọn cột_name (S)

Từ Bảng 1

Tham gia bên trong TABLE2

Trên bảng1.column_name = Bảng2.column_name;

Tham gia bên trong và tham gia đơn giản cả hai đều giống nhau. Bạn cũng có thể viết truy vấn của mình như thế này:messages in our right table and myguests in our left table.

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

Tham gia Bảng 2$sql with the above. When you run it, your result will be:

Hướng dẫn how to full join two tables in mysql - cách tham gia đầy đủ hai bảng trong mysql

Bây giờ chúng ta hãy lấy tên và thông báo từ cơ sở dữ liệu của chúng ta bằng cách sử dụng tham gia bên trong. Truy vấn sẽ như thế nàymessages table, you will find some ID’s which won’t match any user ID’s that’s why this query returns null in Message column where it won’t find any match in right column.

Hàm Concat được sử dụng để nối hai cột chuỗi trong MySQL. Bây giờ hãy mở index.php mà chúng tôi đã tạo trước đó sao chép mã sau trong đó.

Khi bạn chạy trang này trên máy chủ lưu trữ web PHP của bạn, kết quả của bạn sẽ trông như thế này:

Như bạn có thể thấy rõ nó đã chỉ trả về những kết quả phù hợp với user_id và nơi tin nhắn không phải là null.

Hàm Concat được sử dụng để nối hai cột chuỗi trong MySQL. Bây giờ hãy mở index.php mà chúng tôi đã tạo trước đó sao chép mã sau trong đó.

Khi bạn chạy trang này trên máy chủ lưu trữ web PHP của bạn, kết quả của bạn sẽ trông như thế này:

Như bạn có thể thấy rõ nó đã chỉ trả về những kết quả phù hợp với user_id và nơi tin nhắn không phải là null.

Như bạn có thể thấy rõ nó đã chỉ trả về những kết quả phù hợp với user_id và nơi tin nhắn không phải là null.

Đúng vậy tham gia

Khi bạn chạy trang này trên máy chủ lưu trữ web PHP của bạn, kết quả của bạn sẽ trông như thế này:

Như bạn có thể thấy rõ nó đã chỉ trả về những kết quả phù hợp với user_id và nơi tin nhắn không phải là null.

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

Đúng vậy tham gia$sql query with the above. When you run it your result will be:

Hướng dẫn how to full join two tables in mysql - cách tham gia đầy đủ hai bảng trong mysql

Phải tham gia tham gia hai bảng theo cách mà nó trả về tất cả giá trị từ giá trị bên phải và khớp từ các bảng trái và cũng trả lại null trên bảng bên trái khi không tìm thấy trận đấu. Cấu trúc cho tham gia đúng là:

Tham gia bên phải Bảng2

Bây giờ chúng ta hãy lấy tên và tin nhắn từ cơ sở dữ liệu của chúng ta làm tin nhắn trong bảng bên phải của chúng ta và các myguests trong bảng bên trái của chúng ta.

Bây giờ Open index.php và thay thế truy vấn $ SQL bằng ở trên. Khi bạn chạy nó, kết quả của bạn sẽ là:

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

Nếu bạn nhìn vào bảng Tin nhắn, bạn sẽ thấy một số IDS, người đã giành được bất kỳ ID người dùng nào, đó là lý do tại sao truy vấn này trả về NULL trong cột tên và email trong đó nó đã giành được bất kỳ trận đấu nào trong cột bên trái.

CHỖ NỐI BÊN TRÁI

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

Left tham gia tham gia hai bảng theo cách mà nó trả về tất cả giá trị từ giá trị bên trái và khớp từ các bảng bên phải và cũng trả lại null trên bảng bên phải khi không tìm thấy trận đấu. Cấu trúc cho tham gia bên trái là:

Tham gia trái bảng2

Bây giờ Open index.php và truy vấn thay cho $ SQL với những điều trên. Khi bạn chạy nó, kết quả của bạn sẽ là:

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

Hướng dẫn how to full join two tables in mysql - cách tham gia đầy đủ hai bảng trong mysql

Nếu bạn xem bảng tin nhắn, bạn sẽ tìm thấy một số ID, người đã giành được bất kỳ ID người dùng nào, đó là lý do tại sao truy vấn này trả về NULL trong cột Tin nhắn trong đó nó đã giành được bất kỳ trận đấu nào trong cột bên phải.

LIÊN HIỆP

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

Liên minh trong MySQL được sử dụng để kết hợp nhiều cột từ các bảng khác nhau vào một cột duy nhất. Cấu trúc của truy vấn liên minh để chọn các giá trị duy nhất là:

Truy vấn trên sẽ cho phép bạn khớp các hàng từ Bảng1 (trong mọi trường hợp) với các hàng của hai bảng khác. Sử dụng tham gia bên trái cho phép bạn tham gia Bảng 2 và Bảng 3 với Bảng 1 (không chỉ Bảng 2 với Bảng 1 và Bảng 3 với Bảng 2). Bạn cũng có thể thêm các điều kiện như ở đâu, và và Orderby
You can also add conditions like WHERE, AND, and ORDERBY

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

Conclusion:

Trong hướng dẫn này, chúng tôi đã tìm hiểu về các kết nối được sử dụng trong cơ sở dữ liệu quan hệ rất nhiều. Tham gia không chỉ được sử dụng cho hai bảng và bạn có thể tham gia nhiều hơn hai bảng bằng cùng một kỹ thuật. Trong phần tám và phần cuối của loạt MySQL này, tôi sẽ thảo luận về cách & nbsp; sử dụng các biểu thức thông thường (regex) để tìm nạp dữ liệu trong mysql. & Nbsp; Quản lý ngăn xếp PHP và bắt đầu kiểm tra các hướng dẫn này trên các máy chủ được tối ưu hóa PHP của chúng tôi.In the eight and final installment of this MySQL series, I will discuss how to use Regular Expressions (REGEX) for fetching and sorting data in MySQLFor that, subscribe to our blog newsletter and you can sign up as well for our Managed PHP Stack and start testing these tutorials on our PHP optimized servers.

Q. Làm cách nào để tham gia hai bảng với nhau?

Trả lời: Tham gia hai bảng trong SQL có thể được thực hiện theo bốn cách chính: tham gia bên trong (trả về các hàng với các cột phù hợp), tham gia bên trái (tất cả các bản ghi trong bảng bên trái và các bản ghi phù hợp trong bảng bên phải), tham gia bên phải (tất cả các bản ghi trong Bảng bên phải và các bản ghi phù hợp trong bảng bên trái) và Union (loại bỏ các bản sao).Joining two tables in SQL can be done in four major ways: Inner Join (returns rows with matching columns), Left Join (ALL records in the left table and matching records in the right table), Right Join (ALL records in the right table and matching records in the left table), and Union (removes duplicates).

Q. Lệnh SQL nào bạn có thể sử dụng để tham gia hai bảng?

Trả lời: Hai bảng có thể được nối bằng cách sử dụng câu lệnh tham gia bên trong trả về các bản ghi phù hợp từ cả hai bảng. Two tables can be joined using the INNER JOIN statement that returns matching records from both tables.

Q. Làm cách nào để tham gia hai bảng trong SQL mà không có sự tham gia?

Trả lời: Bạn có thể sử dụng câu lệnh sau để tham gia các bảng mà không thực sự sử dụng câu lệnh tham giaYou can use the following statement to join tables without actually using the JOIN statement

1 Tim  1 Tim
0

Chia sẻ ý kiến ​​của bạn trong phần bình luận. Nhận xét ngay bây giờ COMMENT NOW

Chia sẻ bài viết này

Đánh giá của khách hàng tại

Hướng dẫn how to full join two tables in mysql - cách tham gia đầy đủ hai bảng trong mysql

“Couldways Hosting có một trong những dịch vụ khách hàng tốt nhất và tốc độ lưu trữ”

Sanjit C [Nhà phát triển trang web]

Shahzeb Ahmed

Shahzeb là một nhà tiếp thị kỹ thuật số với nền tảng kỹ thuật phần mềm, hoạt động như một người quản lý cộng đồng - cộng đồng PHP tại Cloudways. Ông là sự phát triển đầy tham vọng và nhằm mục đích học hỏi và chia sẻ thông tin về sự phát triển của PHP & Laravel thông qua thực tiễn và thử nghiệm. Anh ấy thích đi du lịch và khám phá những ý tưởng mới bất cứ khi nào anh ấy tìm thấy thời gian. Hãy liên lạc với anh ấy tại [Email & NBSP; được bảo vệ]

Làm thế nào để bạn tham gia đầy đủ 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.

Làm cách nào để tham gia hai bảng đầy đủ?

Chọn các cột từ Bảng1 Tên đầy đủ Tham gia Bảng2 Tên trên Bảng1.COUMN_X = Bảng2. coumn_x = table2.

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.

Chúng ta 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.