Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> SQL

SQL LEFT JOIN: Hướng dẫn đầy đủ

SQL LEFT JOIN là một loại SQL join. Loại join này trả về tất cả hàng từ cột "bên trái" được chỉ định và các hàng tương ứng khớp điều kiện cụ thể trong cột "bên phải".

Trong nhiều trường hợp, khi viết truy vấn trong SQL, bạn chỉ cần tập trung vào một bảng. Tuy nhiên, có nhiều tình huống bạn cần truy vấn hai hoặc nhiều bảng cùng lúc. Lúc này, bạn muốn tạo kết quả kết hợp thông tin từ cả hai bảng.

Trong SQL, điều này gọi là join (nối). Join cho phép lấy thông tin từ nhiều bảng và gộp kết quả thành một bảng đã nối. Ví dụ: nối bảng employees và departments để lấy tên phòng ban cho mỗi nhân viên.

Trong hướng dẫn này, chúng ta sẽ phân tích một loại join trong SQL: LEFT JOIN. Chúng ta sẽ thảo luận WHERE LEFT JOINs hữu ích và cách dùng chúng trong truy vấn SQL.

SQL LEFT JOIN

SQL LEFT JOIN trả về tất cả bản ghi từ bảng "bên trái" được chỉ định trong truy vấn. Nó khớp giá trị từ bảng này dựa trên điều kiện của bạn với bảng "bên phải". Mọi khớp được trả về cùng với tất cả bản ghi từ bảng "bên trái". LEFT JOIN là một loại SQL outer join.

Ví dụ: bạn có thể dùng left join để lấy danh sách tên phòng ban cho mỗi nhân viên. Điều này cho phép thấy tất cả nhân viên ngay cả khi họ chưa được gán phòng ban.

Cú pháp cơ bản cho phép toán LEFT JOIN:

SELECT Bang1.Cot1, Bang2.Cot1 
FROM Bang1 
LEFT JOIN Bang2 ON Bang1.Cot2 = Bang2.Cot2;

Chúng ta bắt đầu join bằng câu lệnh SQL SELECT. Bảng trong mệnh đề FROM là bảng "bên trái". Sau đó dùng từ khóa LEFT JOIN để chỉ định bảng "bên phải".

Chúng ta dùng câu lệnh ON để xác định điều kiện nối hai bảng. LEFT JOINS là một loại outer join. Do đó, bạn có thể thấy loại join này gọi là left outer joins.

Hãy dùng ví dụ minh họa LEFT JOINs hoạt động như thế nào.

Ví dụ LEFT JOIN SQL

Giả sử muốn lấy danh sách tên phòng ban nơi mỗi nhân viên làm việc. Muốn lấy thông tin này bằng một truy vấn. Truy vấn sau cho phép lấy dữ liệu này:

SELECT employees.name, employees.title, company_departments.name AS DeptName 
FROM employees 
LEFT JOIN company_departments 
  ON employees.department_id = company_departments.department_id;

Truy vấn trả về 7 bản ghi:

nametitledeptname
LukeSales AssociateSales
MikeSales AssociateSales
HannahSales AssociateSales
GeoffSenior Sales AssociateSales
AlexisSales AssociateSales
EmmaMarketing DirectorMarketing
JonahVice President of SalesExecutive

(7 hàng)

Dòng đầu tiên: chỉ định muốn lấy 3 cột — tên nhân viên, chức danh, tên phòng ban. AS DeptName đặt tên cột phòng ban là DeptName.

Dòng tiếp theo: lấy thông tin từ bảng employees. Tạo LEFT JOIN giữa bảng đó và company_departments. Dòng cuối: liên kết hai bảng bằng giá trị chung: department_id.

LEFT JOINs chỉ trả về tất cả hàng từ bảng trái và hàng từ bảng phải nơi điều kiện join được thỏa mãn.

Nếu có nhân viên với department_id = 9 mà phòng ban đó không tồn tại, họ vẫn xuất hiện trong truy vấn. Nếu có phòng ban không tồn tại, nó sẽ không xuất hiện trong truy vấn JOIN.

Chạy lại truy vấn với nhân viên mới. Giá trị nhân viên mới:

nametitledepartment_id
AdamSenior Sales Associate9

(1 hàng)

Department_id 9 không tồn tại trong bảng company_departments. Nhưng khi chạy cùng left join query, bản ghi Adam vẫn được bao gồm vì dùng LEFT JOIN. Kết quả:

nametitledeptname
LukeSales AssociateSales
MikeSales AssociateSales
HannahSales AssociateSales
GeoffSenior Sales AssociateSales
AlexisSales AssociateSales
EmmaMarketing DirectorMarketing
JonahVice President of SalesExecutive
AdamSenior Sales Associate

Kết luận

SQL LEFT JOINs truy vấn nhiều hơn một bảng và trả về tất cả hàng từ bảng "bên trái" được chỉ định. Chúng cũng trả về hàng từ bảng bên phải nơi điều kiện JOIN được thỏa mãn.

Ví dụ: bạn muốn trả về danh sách khách hàng và tên gói trung thành họ đăng ký. Nếu tên gói trung thành ở bảng khác, bạn có thể dùng left join để lấy.

Chúng tôi đã viết hướng dẫn How to Learn SQL để giúp người học nâng cao kiến thức SQL. Hướng dẫn chứa danh sách tài nguyên học tập hàng đầu và lời khuyên chuyên gia. Xem hướng dẫn tại trang How to Learn SQL.