실제로 MySQL 하위 쿼리가 FROM 절에서 시작되면 생성된 결과 집합을 파생 테이블이라고 합니다. 파생 테이블을 생성하는 이러한 종류의 하위 쿼리를 구체화된 하위 쿼리라고 합니다. 'cars' 테이블의 데이터를 사용하는 다음 예의 도움으로 이해할 수 있습니다. -
mysql> Select * from Cars; +------+--------------+---------+ | ID | Name | Price | +------+--------------+---------+ | 1 | Nexa | 750000 | | 2 | Maruti Swift | 450000 | | 3 | BMW | 4450000 | | 4 | VOLVO | 2250000 | | 5 | Alto | 250000 | | 6 | Skoda | 1250000 | | 7 | Toyota | 2400000 | | 8 | Ford | 1100000 | +------+--------------+---------+ 8 rows in set (0.02 sec)
이제 다음 쿼리는 파생 테이블을 생성합니다 -
mysql> Select AVG(P) FROM(SELECT Name, SUM(Price) P FROM cars GROUP BY Name)AS totals; +--------------+ | AVG(P) | +--------------+ | 1612500.0000 | +--------------+ 1 row in set (0.76 sec)
위의 파생 테이블은 각 자동차의 총 가격을 반환하고 외부 쿼리는 평균을 반환합니다.
모든 파생 테이블에 대한 별칭을 제공해야 합니다. 이 경우 파생 테이블에 합계의 별칭을 지정했습니다.
하위 쿼리만 실행하면 파생 테이블을 볼 수 있습니다 -
mysql> SELECT Name, SUM(Price) P FROM cars GROUP BY Name ; +--------------+---------+ | Name | P | +--------------+---------+ | Alto | 250000 | | BMW | 4450000 | | Ford | 1100000 | | Maruti Swift | 450000 | | Nexa | 750000 | | Skoda | 1250000 | | Toyota | 2400000 | | VOLVO | 2250000 | +--------------+---------+ 8 rows in set (0.03 sec)