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

Использование выражений в подзапросах

Вы можете использовать выражение, основанное на столбце, а не просто сам столбец, в предложении SELECT подзапроса. Это может быть выполнено или с помощью реляционных операторов или с IN. Например, следующий запрос использует реляционный оператор = ( вывод показывается в Рисунке 10.6 ):

SELECT * FROM Customers WHERE cnum = ( SELECT snum + 1000 FROM Salespeople WHERE sname = Serres );

Он находит всех заказчиков чье значение поля cnum равное 1000, выше поля snum Serres. Мы предполагаем, что столбец sname не имеет никаких двойных значений ( это может быть предписано или UNIQUE INDEX, обсуждаемым в Главе 17 , или ограничением UNIQUE, обсуждаемым в Главе 18 ); иначе подзапрос может произвести многочисленные значения. Когда поля snum и сnum не имеют такого простого функционального значения, как например первичный ключ , что не всегда хорошо, запрос типа вышеупомянутого невероятно полезен.

SQL Execution Log

SELECT *

FROM Customers WHERE cnum =

(SELECT snum + 1000 WHERE Salespeople WHERE sname = 'Serres'

cnum cname city rating snum
2002 Giovanni Rome 200 1003

Рисунок 10.6: Использование подзапроса с

выражением