Left join, right join khác nhau như thế nào?

hôm trước em có đi phòng vấn PHP, họ có hỏi left join, right join khác nhau ntn. em trả lời là left join thì sẽ lấy all dữ liệu ở bảng bên trái trong câu select dù ko khớp điều kiện ON ( khi đó giá trị đó sẽ là null thì phải ), right thì ngược lại. họ cười và bảo sao lại giải thích như thế và cũng ko giải thích cho em ý của hộ. vậy thì left join và right join khác nhau ntn ạ ?

giá trị nào sẽ null em-.-?

join là để nối những giá trị giữa 2 bảng, sau khi thực hiện left join sẽ ra kết quả là một bảng mới với những giá trị phù hợp với điều kiện join,những giá trị không phù hợp ở bảng bên trái cũng sẽ vẫn được giữ nguyên,còn right join thì ngược lại

Bạn giải thích mình thấy cũng khá hợp lý rồi. Nhưng đáng ra bạn bên thêm ví dụ thì người ta sẽ hiểu rõ câu trả lời của bạn hơn. Còn nếu bạn vẫn mơ hồ thì bạn có thể xem ở link này. Nó khá chi tiết và rõ ràng

1 Like

Ô. Mình cũng đang vấp cái này, nếu right join chỉ là ngược với left join thì trả ai tạo ra nó làm gì, khi cần right join thì chỉ cần đổi vị trí các bảng là ok. Có lẽ nó có liên quan đến performance
@nguyenhuuca giải thích hộ với nào.

Tác dụng như nhau thôi, nhưng khi query nhiều bản thì đôi khí có right join thì tiện lợi hơn thôi. :smiley:

1 Like

không phải đâu, hôm qua ông anh tôi mới đố thế mình trả lời y như trên, ông ấy cười sm, tôi search thử thấy nhiều topic nói về cái này mà vẫn chưa thống nhất được

Vậy ah thế hỏi ổng xem nhiều khi ổng lại sâu về mấy cái này.

1 Like

không nói, toàn để cho tự tìm hiểu:((

Thế hỏi ổng gợi ý đi chớ, chứ sao mà biêt được. :v.

1 Like

Chắc ý nói tới implementation của LEFT JOIN:
https://dev.mysql.com/doc/refman/8.0/en/outer-join-optimization.html

Ổng cười mà ổng không giải thích thì cho ổng 1 cái bép vì cái tội hù ma mới :v

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?