이해하기 위해 다음 표의 데이터를 사용하고 있습니다. −
mysql> Select * from customers; +-------------+----------+ | Customer_Id | Name | +-------------+----------+ | 1 | Rahul | | 2 | Yashpal | | 3 | Gaurav | | 4 | Virender | +-------------+----------+ 4 rows in set (0.00 sec) mysql> Select * from reserve; +------+------------+ | ID | Day | +------+------------+ | 1 | 2017-12-30 | | 2 | 2017-12-28 | | 2 | 2017-12-25 | | 1 | 2017-12-24 | | 3 | 2017-12-26 | +------+------------+ 5 rows in set (0.00 sec)
이제 다음은 차를 예약하지 않은 모든 고객의 이름을 찾는 하위 쿼리입니다.
mysql> Select Name from customers where customer_id NOT IN (Select id From reserve); +----------+ | Name | +----------+ | Virender | +----------+ 1 row in set (0.00 sec)
이제 다음 단계를 통해 위의 하위 쿼리를 RIGHT 조인으로 변환할 수 있습니다 -
- 서브 쿼리에 이름이 지정된 'Reserve' 테이블을 FROM 절로 이동하고 LEFT JOIN을 사용하여 'Customers'에 조인합니다.
- WHERE 절은 customer_id 열을 하위 쿼리에서 반환된 ID와 비교합니다. 따라서 IN 식을 FROM 절에 있는 두 테이블의 id 열 간의 명시적 직접 비교로 변환합니다.
- WHERE 절에서 'Reserve' 테이블에 NULL이 있는 행으로 출력을 제한합니다.
mysql> SELECT Name from customers LEFT JOIN reserve ON customer_id = Id WHERE Id IS NULL; +----------+ | Name | +----------+ | Virender | +----------+ 1 row in set (0.00 sec)