DML y subqueries
Las subqueries también se pueden utilizar en consultas de modificación de datos de los siguientes tipos:
Eliminación de datos de una tabla en base a condiciones en otras tablas
Actualización de datos de una tabla en base a condiciones en otras tablas
Inserción / modificación de datos con valores calculados a partir de subqueries
Las subqueries en este tipo de consultas se harán en el WHERE o en el SET
INSERT con subqueries
Por ejemplo, si queremos duplicar los pagos, cambiando la fecha hoy
INSERT INTO rental(rental_date, inventory_id, customer_id, return_date, staff_id, last_update)
SELECT CURRENT_DATE(), r.inventory_id, r.customer_id, r.return_date, r.staff_id, NOW()
FROM rental r;DELETE con subqueries
Por ejemplo, si se desean eliminar las películas de Horror
DELETE FROM film f
WHERE f.film_id IN (
SELECT fc.film_id
FROM film_category fc
INNER JOIN category c ON fc.category_id = c.category_id
WHERE c.name='Horror'
)UPDATE con subqueries
Por ejemplo, podría querer cambiar el año de las películas de Horror
UPDATE film f
SET release_year=2007
WHERE f.film_id IN (
SELECT fc.film_id
FROM film_category fc
INNER JOIN category c ON fc.category_id = c.category_id
WHERE c.name='Horror'
)Actualizar las películas a la fecha más nueva
Por ejemplo, vamos a actualizar el año de las películas de Horror al año de la película más nueva en Sakila
UPDATE film f
SET release_year= (SELECT MAX(release_year) FROM film)
WHERE f.film_id IN (
SELECT fc.film_id
FROM film_category fc
INNER JOIN category c ON fc.category_id = c.category_id
WHERE c.name='Horror'
)Last updated