Ngôn ngữ SQL - RIGHT JOIN

Lệnh Right Join trong SQL

Lệnh Right Join trong SQL trả về tất cả các hàng từ bảng bên phải, ngay cả khi không có kết quả khớp nào trong bảng bên trái. Điều này có nghĩa là nếu mệnh đề ON không khớp với các bản ghi của bảng bên trái. Lệnh Left Join vẫn sẽ trả về một hàng trong kết quả, nhưng với NULL cho mỗi cột của bảng bên trái.


Cú pháp

Cú pháp cơ bản của lệnh Right Join trong SQL như sau:

SELECT table1.column1, table2.column2...
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;

RIGHT JOIN trong SQL


Ví dụ sử dụng lệnh Right Join trong SQL

Tạo bảng Customers:


CREATE TABLE CUSTOMERS (
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25),
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

Insert dữ liệu vào bảng Customers:

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
    VALUES (1, 'Ha Anh', 32, 'Da Nang', 2000.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
    VALUES (2, 'Van Ha', 25, 'Ha Noi', 1500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
    VALUES (3, 'Vu Bang', 23, 'Vinh', 2000.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
    VALUES (4, 'Thu Minh', 25, 'Ha Noi', 6500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
    VALUES (5, 'Hai An', 27, 'Ha Noi', 8500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
    VALUES (6, 'Hoang', 22, 'Ha Noi', 4500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
    VALUES (7, 'Binh', 24, 'Ha Noi', 10000.00 );
Tạo bảng Orders:

 

CREATE TABLE ORDERS (
   OID  INT              NOT NULL,
   DATE VARCHAR (20)     NOT NULL,
   CUSTOMER_ID INT       NOT NULL,
   AMOUNT INT,
   PRIMARY KEY (OID)
);

Insert dữ liệu vào bảng Orders:

INSERT INTO ORDERS (OID, DATE, CUSTOMER_ID, AMOUNT)
    VALUES (102, '2009-10-08 00:00:00', 3, 10);
INSERT INTO ORDERS (OID, DATE, CUSTOMER_ID, AMOUNT)
    VALUES (100, '2009-10-08 00:00:00', 3, 15);
INSERT INTO ORDERS (OID, DATE, CUSTOMER_ID, AMOUNT)
    VALUES (101, '2009-11-20 00:00:00', 2, 5);
INSERT INTO ORDERS (OID, DATE, CUSTOMER_ID, AMOUNT)
    VALUES (103, '2008-05-20 00:00:00', 4, 20);

Bây giờ, chúng ta hãy join hai bảng này bằng cách sử dụng Right Join như sau:

SELECT  c.ID, c.NAME, o.AMOUNT, o.DATE
    FROM CUSTOMERS c
    RIGHT JOIN ORDERS o
    ON c.ID = o.CUSTOMER_ID;

Kết quả:

Ví dụ RIGHT JOIN trong SQL