Derived Tables
A derived table is similar to a Temporary table but derived from another SELECT statement.
When a subquery starts at the From clause (instead of Where), the result set is called Derived table.
Table invoices have around ten columns; our derived table 'tbl' has four columns.
use murach;
SELECT
*
FROM
(
SELECT
invoice_number
,invoice_date
,payment_total
,credit_total
FROM invoices
) tbl;
Query with Case statements
use Murach;
SELECT
*
FROM
(
SELECT
invoice_number
,invoice_date
,payment_total
,credit_total
,CASE terms_id
WHEN 1 THEN 'Net due 10 days'
WHEN 2 THEN 'Net due 20 days'
WHEN 3 THEN 'Net due 30 days'
WHEN 4 THEN 'Net due 60 days'
WHEN 5 THEN 'Net due 90 days'
END AS terms
FROM invoices
) tbl;
'tbl' is the Table alias name. It can be anything. Just give a name for the output of the Derived query.
Derived Tables vs Sub Query
When the query is used with FROM clause, it's the DERIVED table.
When the query is used with a WHERE clause, it's Sub Query.
Sub Query
use sakila;
SELECT
*
FROM
actor
WHERE
actor_id IN
(SELECT actor_id FROM film_actor
WHERE film_id =
(SELECT film_id FROM film
WHERE title = 'Ace Goldfinger')
);
Derived Table
use sakila;
SELECT * FROM
(
SELECT
*
FROM
actor
WHERE
actor_id IN
(SELECT actor_id FROM film_actor
WHERE film_id =
(SELECT film_id FROM film
WHERE title = 'Ace Goldfinger')
)
) t;
Last updated