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

Вы можете использовать выражение, основанное на столбце, а не просто сам столбец, в предложении 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: Использование подзапроса с
выражением
 

‹ Использование подзапросов, которые выдают много строк с помощью оператора IN
Вверх
Подзапросы выбирают одиночные столбцы ›

Айтистанция
Добавить комментарий

Adblock
detector