Courses
SQL, viết tắt của Structured Query Language, là một công cụ mạnh mẽ để tìm kiếm trong lượng dữ liệu lớn và trả về thông tin cụ thể phục vụ phân tích. Học SQL rất quan trọng với bất kỳ ai muốn trở thành nhà phân tích dữ liệu, kỹ sư dữ liệu, hay nhà khoa học dữ liệu, và cũng hữu ích trong nhiều lĩnh vực khác như phát triển web hoặc marketing.
Dù bạn là người tìm việc đang tìm cơ hội mới để áp dụng kỹ năng SQL hay là quản lý tuyển dụng sắp phỏng vấn ứng viên cho vị trí mở trong công ty, một chủ đề chắc chắn sẽ xuất hiện trong phỏng vấn là các câu hỏi liên quan đến SQL joins.
Trong SQL, join là một mệnh đề dùng để kết hợp và truy xuất bản ghi từ hai hoặc nhiều bảng. Các bảng SQL có thể được join dựa trên mối quan hệ giữa các cột của những bảng đó.
Trong bài viết này, tôi đã tổng hợp những câu hỏi về SQL joins thường gặp nhất. Luyện tập các câu hỏi phỏng vấn này sẽ giúp bạn chuẩn bị tốt hơn và tự tin hơn khi được hỏi về khái niệm phổ biến này.
Sẵn sàng làm bài kiểm tra? Hãy cùng “join” nào!
TL;DR: Những Điểm Mấu Chốt Trong Phỏng Vấn SQL Joins
- Có sáu loại join cốt lõi trong SQL:
INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL JOIN,SELF JOINvàCROSS JOIN. INNER JOINchỉ trả về các hàng khớp, trong khiLEFT JOINvàRIGHT JOINbao gồm toàn bộ hàng từ một phía cộng với các hàng khớp từ phía còn lại.- Các chủ đề phỏng vấn nâng cao gồm semi-join, anti-join, và sự khác biệt giữa mệnh đề
ONvàWHEREtrong joins. - Luyện viết truy vấn join bằng tay — nhà tuyển dụng đánh giá cao cách bạn giải quyết vấn đề hơn là thuộc lòng cú pháp hoàn hảo.
- Hiểu khi nào dùng từng loại join và cách chúng ảnh hưởng đến hiệu năng, đặc biệt là
CROSS JOIN, vốn tạo ra tích Descartes.
10 Câu Hỏi Phỏng Vấn SQL Joins Dành Cho Người Mới Bắt Đầu
1. Join là gì?
Join là một mệnh đề SQL dùng để kết hợp và truy xuất bản ghi từ hai hoặc nhiều bảng. Các bảng SQL có thể được join dựa trên mối quan hệ giữa các cột của những bảng đó. Xem hướng dẫn SQL joins của chúng tôi để biết mọi chi tiết.
2. Các loại join chính là gì?
Có sáu loại join chính:
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
- FULL JOIN
- SELF JOIN
- CROSS JOIN
3. Sự khác nhau giữa LEFT JOIN và RIGHT JOIN là gì?
LEFT JOIN trả về tất cả bản ghi từ bảng bên trái và các bản ghi khớp từ bảng bên phải. Với các hàng ở bảng bên trái không có đối sánh ở bảng bên phải, kết quả sẽ chứa giá trị NULL ở các cột của bảng bên phải.
RIGHT JOIN trả về tất cả bản ghi từ bảng bên phải và các bản ghi khớp từ bảng bên trái. Với các hàng ở bảng bên phải không có đối sánh ở bảng bên trái, kết quả sẽ chứa giá trị NULL ở các cột của bảng bên trái.
-- LEFT JOIN: tất cả nhân viên, bao gồm cả những người không thuộc phòng ban nào
SELECT employees.name, departments.dept_name
FROM employees
LEFT JOIN departments
ON employees.dept_id = departments.dept_id;
-- RIGHT JOIN: tất cả phòng ban, bao gồm cả những phòng không có nhân viên
SELECT employees.name, departments.dept_name
FROM employees
RIGHT JOIN departments
ON employees.dept_id = departments.dept_id;
Để xem kỹ hơn các khác biệt tinh tế, hãy đọc hướng dẫn SQL LEFT JOIN vs. LEFT OUTER JOIN của chúng tôi.
4. Vì sao joins lại quan trọng trong quản trị SQL?
SQL joins quan trọng trong quản trị SQL vì nhiều lý do, bao gồm:
- SQL JOINS là phương thức then chốt để tích hợp nhiều bảng sao cho dễ đọc và phân tích.
- Chúng cung cấp cách truy cập và kết hợp thông tin trong cơ sở dữ liệu một cách hiệu quả và thuận tiện.
- Sử dụng JOINS có thể giảm mức sử dụng dữ liệu và lưu trữ trên cơ sở dữ liệu.
5. OUTER JOIN là gì?
OUTER JOIN trả về cả các giá trị khớp và không khớp từ một hoặc cả hai bảng. LEFT JOIN, RIGHT JOIN và FULL JOIN đều là các loại OUTER JOIN. Để so sánh chi tiết, xem hướng dẫn SQL INNER JOIN vs. OUTER JOIN của chúng tôi.
6. INNER JOIN là gì?
INNER JOIN chỉ trả về những bản ghi thỏa mãn điều kiện join đã xác định ở cả hai (hoặc tất cả) bảng. Đây là loại join mặc định trong SQL.
7. CROSS JOIN là gì?
CROSS JOIN tạo ra tích Descartes, nghĩa là mỗi hàng từ bảng thứ nhất được kết hợp với mỗi hàng từ bảng thứ hai. Điều này tạo ra một tập dữ liệu mà số hàng bằng tích số hàng của hai bảng.
8. Có thể join một bảng SQL với chính nó không?
Có, điều này thường được thực hiện bằng self-join. Self-join là một kiểu JOIN dùng để so sánh các hàng trong cùng một bảng. Khác với các truy vấn SQL JOIN khác kết hợp hai hoặc nhiều bảng, self-join kết hợp một bảng với chính nó.
9. Sự khác nhau giữa FULL JOIN và CROSS JOIN là gì?
FULL JOIN trả về tất cả bản ghi từ cả hai bảng, bao gồm các bản ghi khớp theo điều kiện ON. Nếu không có đối sánh, nó vẫn bao gồm mọi hàng và điền NULL cho các cột không khớp.
Ngược lại, CROSS JOIN trả về mọi tổ hợp có thể có của tất cả các hàng từ cả hai bảng, tạo ra một tích Descartes. Điều này thường dẫn đến một bảng lớn hơn đáng kể so với kết quả của FULL JOIN, vì nó không dựa trên bất kỳ điều kiện nào để giới hạn đầu ra.
10. Mục đích của việc dùng bí danh (alias) trong SQL JOINS là gì?
Khi truy vấn trở nên phức tạp, tên có thể dài và khó dùng. Để giúp rõ ràng hơn, ta có thể dùng alias để gán tên mới cho các thành phần trong truy vấn, bao gồm cột và bảng. Để đặt alias cho một đối tượng, ta dùng mệnh đề AS.
10 Câu Hỏi Phỏng Vấn SQL Joins Nâng Cao
11. EQUI JOIN là gì?
EQUI JOIN là một kiểu phép join trong cơ sở dữ liệu kết hợp các hàng từ hai hoặc nhiều bảng dựa trên điều kiện khớp dùng toán tử bằng (=). Nó dùng để truy xuất dữ liệu nơi các giá trị trong các cột chỉ định bằng nhau.
EQUI JOIN trả về kết quả giống INNER JOIN nhưng với cú pháp khác, như trong ví dụ sau:
SELECT COURSES.name, TECHNOLOGIES.name
FROM COURSES, TECHNOLOGIES
WHERE COURSES.technology_id = TECHNOLOGIES.technology_id;
SELECT COURSES.name, TECHNOLOGIES.name
FROM COURSES
INNER JOIN TECHNOLOGIES
ON COURSES.technology_id = TECHNOLOGIES.technology_id;
12. Sự khác nhau giữa mệnh đề ON và USING trong join là gì?
Bạn thường dùng từ khóa ON để chỉ định các cột chung ở hai bảng nhằm thực hiện join. Khi các cột dùng để join có cùng tên ở cả hai bảng, mệnh đề USING có thể dùng như cách viết rút gọn.
Ví dụ, nếu các bảng COURSES và TECHNOLOGIES có một cột chung tên là ‘technology_id’, bạn có thể dùng truy vấn sau
SELECT * FROM COURSES
JOIN TECHNOLOGIES
USING (technology_id);
13. NATURAL JOIN là gì?
NATURAL JOIN được dùng để tạo JOIN dựa trên các cột chung ở hai bảng. Cột chung là những cột có cùng tên ở cả hai bảng.
Dựa trên ví dụ ở câu trước, ta có thể viết cùng truy vấn như sau:
SELECT * FROM COURSES
NATURAL JOIN TECHNOLOGIES
14. Sự khác nhau giữa mệnh đề JOIN và mệnh đề UNION là gì?
Mệnh đề JOIN dùng để kết hợp dữ liệu thành các cột mới dựa trên các cột chung của hai hoặc nhiều bảng.
Ngược lại, mệnh đề UNION dùng để kết hợp dữ liệu thành các hàng mới, dựa trên kết quả của hai hoặc nhiều câu lệnh SELECT. Nói cách khác, UNION dùng để nối tập dữ liệu theo chiều dọc (theo hàng). Để tránh lỗi, mọi câu lệnh SELECT trong UNION phải có cùng số cột, và các cột cũng phải có kiểu dữ liệu tương thích. Để có cái nhìn đầy đủ về các phép liên quan, xem hướng dẫn toán tử tập hợp trong SQL của chúng tôi.
15. Semi-join là gì?
Các truy vấn Semi Join thường được thực thi dưới dạng truy vấn lồng (subquery), trong đó các hàng chỉ được lấy từ bảng thứ nhất (bên trái) theo một điều kiện (hoặc tập điều kiện) khớp trong bảng thứ hai. Khác với join thông thường, vốn đưa các hàng khớp từ cả hai bảng vào kết quả, semi-join chỉ đưa các cột từ bảng bên trái vào kết quả.
-- Semi-join dùng EXISTS: tìm khách hàng đã từng đặt hàng
SELECT customer_id, customer_name
FROM customers
WHERE EXISTS (
SELECT 1 FROM orders
WHERE orders.customer_id = customers.customer_id
);
16. Anti-join là gì?
Anti-join, còn gọi là anti-semi-join, là đối lập hoàn toàn với semi-join. Trong Anti Join, các hàng được lấy từ bảng thứ nhất theo một điều kiện (hoặc tập điều kiện) không khớp trong bảng thứ hai.
-- Anti-join dùng NOT EXISTS: tìm khách hàng chưa từng đặt hàng
SELECT customer_id, customer_name
FROM customers
WHERE NOT EXISTS (
SELECT 1 FROM orders
WHERE orders.customer_id = customers.customer_id
);
17. Sự khác nhau giữa mệnh đề INTERSECT và INNER JOIN là gì?
INNER JOIN kết hợp dữ liệu từ hai hoặc nhiều bảng dựa trên một mối quan hệ được chỉ định, thường dùng một cột hoặc trường chung làm điều kiện join. Nó tạo ra tập dữ liệu chỉ bao gồm các hàng thỏa điều kiện join.
Ngược lại, INTERSECT không yêu cầu mối quan hệ bảng trực tiếp. Thay vào đó, nó hoạt động với các câu lệnh SELECT hoàn chỉnh, chỉ trả về những hàng xuất hiện ở cả hai kết quả. Để dùng INTERSECT, các câu lệnh SELECT phải có cùng số cột và kiểu dữ liệu tương thích.
18. Cần lưu ý hiệu năng gì khi dùng CROSS JOINS?
Vì CROSS JOIN trả về kết hợp cặp của mỗi hàng của bảng thứ nhất với mỗi hàng của bảng thứ hai, điều này có thể tạo ra một bảng cực kỳ lớn, đặc biệt nếu các bảng tham gia đã lớn sẵn. Do đó, hãy thận trọng khi dùng CROSS JOINS vì chúng có tiềm năng tiêu tốn tài nguyên đáng kể và gây ra vấn đề hiệu năng.
19. Bạn hiểu JOIN có điều kiện (conditional JOIN) là gì?
Conditional join là một kỹ thuật mạnh để kết hợp dữ liệu từ nhiều bảng dựa trên các điều kiện cụ thể, cho phép tạo ra các truy vấn linh hoạt và động hơn. Conditional join giúp quản trị viên cơ sở dữ liệu định nghĩa các truy vấn tùy chỉnh có thể bao gồm các mệnh đề bổ sung, như hàm tổng hợp, toán tử so sánh và toán tử logic.
20. Sự khác nhau giữa mệnh đề WHERE và ON trong SQL JOINS là gì?
Mục đích của mệnh đề ON là chỉ định điều kiện join, nói cách khác, định nghĩa cách các bảng sẽ được nối. Cụ thể, bạn xác định cách các bản ghi cần được đối sánh.
Ngược lại, mệnh đề WHERE dùng để chỉ định các điều kiện lọc, tức là xác định những hàng nào sẽ được giữ lại trong tập kết quả. Một JOIN bao gồm điều kiện lọc có thể được xem là một conditional JOIN.
Để hiểu đầy đủ trình tự xử lý truy vấn của SQL — bao gồm thời điểm ON và WHERE được đánh giá — hãy xem hướng dẫn về thứ tự thực thi trong SQL của chúng tôi.
So Sánh Các Loại SQL JOIN Khác Nhau
Bảng dưới đây cung cấp phần so sánh ngắn gọn và rõ ràng giữa các loại SQL JOIN, giúp người đọc dễ hiểu hơn về những tình huống cụ thể nên áp dụng từng loại JOIN:
| Loại JOIN | Định nghĩa | Trường hợp sử dụng |
|---|---|---|
| INNER JOIN | Chỉ trả về các hàng có giá trị khớp ở cả hai bảng. | Dùng khi bạn cần truy xuất bản ghi có giá trị khớp ở cả hai bảng. Thường dùng để kết hợp dữ liệu liên quan qua khóa ngoại. |
| LEFT JOIN (LEFT OUTER JOIN) | Trả về tất cả hàng từ bảng bên trái và các hàng khớp từ bảng bên phải. Các hàng ở bảng bên trái không có đối sánh ở bảng bên phải sẽ chứa NULL. | Hữu ích khi cần lấy tất cả bản ghi từ bảng bên trái, kèm dữ liệu khớp ở bảng bên phải nếu có. Thường dùng khi cần tìm mọi mục trong một bảng và xem chúng có mục tương ứng ở bảng khác không. |
| RIGHT JOIN (RIGHT OUTER JOIN) | Trả về tất cả hàng từ bảng bên phải và các hàng khớp từ bảng bên trái. Các hàng ở bảng bên phải không có đối sánh ở bảng bên trái sẽ chứa NULL. | Tương tự LEFT JOIN nhưng tập trung vào bảng bên phải. Dùng khi bạn cần mọi bản ghi từ bảng bên phải dù có hay không đối sánh ở bảng bên trái. |
| FULL JOIN (FULL OUTER JOIN) | Trả về tất cả hàng khi có đối sánh ở một trong hai bảng. Nếu không có đối sánh, phía không khớp sẽ là NULL. | Hữu ích khi kết hợp dữ liệu tồn tại ở một trong hai bảng và thu thập cả dữ liệu không khớp từ cả hai bảng. |
| SELF JOIN | Một phép join trong đó một bảng được join với chính nó. | Dùng khi cần so sánh các hàng trong cùng một bảng, chẳng hạn tìm quan hệ trong dữ liệu phân cấp hoặc so sánh giá trị giữa các hàng. |
| CROSS JOIN | Tạo tích Descartes của hai bảng, nghĩa là kết hợp mỗi hàng của bảng thứ nhất với mỗi hàng của bảng thứ hai. | Thường dùng khi cần mọi tổ hợp của hai tập dữ liệu, như tạo dữ liệu kiểm thử hoặc khám phá mọi khả năng kết hợp. |
Chuẩn Bị Cho Buổi Phỏng Vấn SQL Joins Của Bạn
Chuẩn bị kỹ cho phỏng vấn SQL là điều then chốt để vượt qua giai đoạn này của quy trình ứng tuyển. Như đã thấy, có khá nhiều loại join để học. Nếu bạn muốn có hướng dẫn thân thiện cho người mới về SQL joins, chúng tôi rất khuyến nghị bạn đọc Introduction to SQL Joins. Hoặc, nếu bạn muốn nắm vững joins, cách tốt nhất là thực hành. Hãy xem khóa học Joining Data in SQL để tăng lực cho truy vấn của bạn bằng table join và lý thuyết tập quan hệ.
Tuy vậy, còn rất nhiều điều để nói về SQL joins. Trong hầu hết các buổi phỏng vấn SQL, đây chỉ là một trong nhiều chủ đề mà người phỏng vấn sẽ hỏi để kiểm tra sự thành thạo SQL của bạn. Để giúp bạn làm quen với các câu hỏi phỏng vấn SQL phổ biến nhất, tôi đã tổng hợp các hướng dẫn sau:
- Top 84 Câu Hỏi Phỏng Vấn SQL và Đáp Án cho 2026
- Top 45 Câu Hỏi Phỏng Vấn PostgreSQL Cho Mọi Trình Độ
- 28 Câu Hỏi Phỏng Vấn Hàng Đầu Cho Nhà Khoa Học Dữ Liệu Ở Mọi Cấp Độ
- Top 30 Câu Hỏi Phỏng Vấn SQL Server (2026)
- Top 34 Câu Hỏi và Đáp Án MySQL cho 2026
Do mức độ bất định cao trong phỏng vấn, giai đoạn này của quy trình ứng tuyển có thể gây căng thẳng. Cuối cùng, biết câu hỏi chỉ là một phần câu chuyện. Phần còn lại là biết cách ứng xử trong buổi phỏng vấn.
Để giúp bạn chinh phục phỏng vấn, đây là vài mẹo nhỏ.
- Không ai kỳ vọng bạn biết mọi thứ. Thiếu một kỹ năng cụ thể là bình thường. Nếu công ty yêu cầu giải pháp bằng R nhưng bạn chỉ biết làm bằng Python, hãy trình bày cách bạn giải quyết vấn đề bằng Python và thể hiện mong muốn học R.
- Nghĩ trước khi trả lời. Hãy xin thêm thời gian nếu câu hỏi cần thiết. Điều đó cho thấy bạn nghiêm túc với câu hỏi. Tuy nhiên, đừng làm vậy với mọi câu hỏi.
- Giải thích vì sao vai trò của bạn quan trọng với công ty. Đôi khi, đặc biệt ở công ty nhỏ, họ có thể chưa hiểu rõ vì sao cần một nhà khoa học dữ liệu. Nếu vậy, hãy nhấn mạnh cách bạn có thể cải thiện mức độ hiện diện và lợi nhuận bằng cách nâng cấp sản phẩm hiện có hoặc tạo giải pháp mới.
- Các ngành khác nhau. Làm việc với dữ liệu ở các lĩnh vực khác nhau có thể rất khác nhau. Một công ty công nghệ sinh học khác với nhà cung cấp dịch vụ đám mây. Hãy dành thời gian để hiểu đặc thù lĩnh vực của công ty và thể hiện mong muốn học hỏi. Tuy nhiên, về cơ bản ai cũng làm việc với dữ liệu, và dữ liệu có thể tiếp cận theo những cách tương tự bất kể ngành nào.
- Xử lý việc bị từ chối. Đó là thực tế của thị trường lao động cạnh tranh hiện nay. Hãy rút kinh nghiệm từ sai lầm, tiếp tục học kỹ năng mới và cải thiện kỹ năng cũ. Hỏi lời khuyên từ những nhân viên cấp cao hơn, đặc biệt nếu họ làm trong khoa học dữ liệu. Bạn cũng có thể xin phản hồi từ người phỏng vấn nếu không thành công khi ứng tuyển.
Kết Luận
Bạn đã hoàn thành! Hy vọng danh sách câu hỏi SQL JOIN thường gặp này sẽ giúp bạn chuẩn bị và thể hiện thật tốt trong phỏng vấn. Chúc bạn may mắn trong các buổi phỏng vấn SQL sắp tới.
Trong lúc này, nếu bạn cảm thấy cần tự tin hơn với kỹ năng SQL của mình, DataCamp có thể giúp bạn. Dưới đây là danh sách một số khóa học, lộ trình và tài liệu SQL chuyên sâu để bạn rèn luyện:

Tôi là một chuyên viên phân tích dữ liệu tự do, hợp tác với các công ty và tổ chức trên toàn thế giới trong các dự án khoa học dữ liệu. Tôi cũng là giảng viên khoa học dữ liệu với hơn 2 năm kinh nghiệm. Tôi thường xuyên viết bài về khoa học dữ liệu bằng tiếng Anh và tiếng Tây Ban Nha; một số bài đã được đăng trên các trang uy tín như DataCamp, Towards Data Science và Analytics Vidhya. Là một nhà khoa học dữ liệu có nền tảng khoa học chính trị và luật, mục tiêu của tôi là làm việc tại giao điểm giữa chính sách công, pháp luật và công nghệ, tận dụng sức mạnh của ý tưởng để thúc đẩy các giải pháp và cách tiếp cận mới nhằm giúp chúng ta đối mặt với những thách thức cấp bách, đặc biệt là khủng hoảng khí hậu. Tôi xem mình là người tự học, không ngừng trau dồi và là một người ủng hộ vững chắc cho tính đa ngành. Không bao giờ là quá muộn để học điều mới.