Подзапросы возвращающие скалярный результат
Подзапросы, используемые в предикатах поиска, кроме предикатов существования и количественных предикатов, должны возвращать скалярный результат, то есть не более чем один столбец из одной отобранной строки или одно агрегированное значение, в противном случае, произойдёт ошибка времени выполнения (“Multiple rows in a singleton select…”).
Note
|
Несмотря на то, что Firebird сообщает о подлинной ошибке, сообщение может немного вводить в заблуждение.“singleton SELECT” — это запрос, который не должен возвращать более одной строки.Однако “singleton” и “scalar” не являются синонимами: не все одноэлементные SELECTS должны быть скалярными; а выборка по одному столбцу может возвращать несколько строк для предикатов существования и количественных предикатов. |
SELECT
e.first_name,
e.last_name,
(SELECT
sh.new_salary
FROM
salary_history sh
WHERE
sh.emp_no = e.emp_no
ORDER BY sh.change_date DESC ROWS 1) AS last_salary
FROM
employee e
WHERE
для получения значения максимальной зарплаты сотрудника и фильтрации по немуSELECT
e.first_name,
e.last_name,
e.salary
FROM
employee e
WHERE
e.salary = (SELECT
MAX(ie.salary)
FROM
employee ie)