Типичные Проблемы при Использовании Подзапросов

Что не так с Этим Оператором?

Типичные Проблемы при Использовании Подзапросов.

Распространенная ошибка с подзапросами происходит, когда больше чем одна строка возвращается для однострочного подзапроса.

В SQL-операторе на рисунке подзапрос содержит предложение GROUP BY, которое подразумевает, что подзапрос возвратит несколько строк, по одной для каждой группы, которую он находит. В этом случае результаты подзапроса 4400, 6000, 2500, 4200, 7000, 17000 и 8300.

Внешний запрос берет эти результаты и использует их в предложении WHERE. Предложение WHERE содержит оператор равенства (=), однострочный оператор сравнения, который ожидает только одно значение. Оператор = не может принять больше чем одно значение из подзапроса и, поэтому, генерирует ошибку.

Чтобы исправить эту ошибку измените оператор = на IN.

Никакие Строки Не Возвратились Внутренним Запросом

Никакие Строки Не Возвратились Внутренним Запросом

Другая типичная проблема с подзапросами происходит, когда никакие строки не возвращаются внутренним запросом.

В SQL-операторе на рисунке подзапрос содержит предложение WHERE. По-видимому, намерение состоит в том, чтобы найти сотрудника, именем которого является Haas. Оператор корректен, но не выбирает строк, когда выполняется, потому что нет сотрудника по имени Haas. Поэтому, подзапрос не возвращает строк.

Внешний запрос берет результат подзапроса (null) и использует этот результаты в предложении WHERE.

Внешний запрос не находит сотрудника с ID работы, равным null, и таким образом не возвращает строк. Если бы существовала работа со значением null, строка не вернулась бы, потому что сравнение двух значений null приводит к null; поэтому, условие WHERE не является истиной.

Далее: Оператор UNION ALL

Смотрите также
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)