Я проверил столько вопросов, сколько мог, но просто не могу найти ответ для ПОЧЕМУ это происходит.«Подзапрос SQL Server возвратил более 1 значения» при использовании MAX() в подзапросе
У меня есть запрос:
SELECT *
FROM TableA
WHERE Col1 =
(
SELECT MAX(TBC1)
FROM TableB
GROUP BY TBC2
)
который бросает ошибку Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
но при изменении оператора =
к IN
тогда счастливо проходит. Я также отмечаю, что использование TOP(1)
в дополнительном запросе также решит проблему.
Из-за логики, похоже, что список строк, возвращаемых до того, как найден MAX
, вызывает ошибку в SQL, хотя MAX
вернет только 1 строку?
Я просто пытаюсь понять рассуждения и как лучше всего построить такой запрос.
Вы используете группу по подзапросу. поэтому он возвращает более одного значения. Удалите группу и проверьте результаты. – balaraman