Сейчас на сайте
Сейчас на сайте 0 пользователей и 0 гостей.

Использование подзапросов с UPDATE

UPDATE использует подзапросы тем же самым способом, что и DELETE - внутри этого необязательного предиката. Вы можете использовать соотнесенные подзапросы или в форме пригодной для использования с DELETE - связанной или с модифицируемой таблицей или с таблицей, вызываемой во внешнем запросе. Например, с помощью соотнесенного подзапроса к таблице, которая будет модифицироваться, вы можете увеличить комиссионные всех продавцов которые были назначены по крайней мере двум заказчикам:

UPDATE Salespeople SET comm = comm + .01 WHERE 2 < = ( SELECT COUNT (cnum) FROM Customers WHERE Customers.snum = Salespeople.snum );

Теперь продавцы Peel и Serres, имеющие многочисленных заказчиков, получат повышение своих комиссионных. Имеется разновидность последнего примера из предыдущего раздела с DELETE. Он уменьшает комиссионные продавцов, которые произвели наименьшие порядки, но не стирает их в таблице:

UPDATE Salespeople SET comm = comm - .01 WHERE snum IN ( SELECT snum FROM Orders a WHERE amt = ( SELECT MIN (amt) FROM Orders b WHERE a.odate = b.odate ));