SQL-сервер: Как использовать агрегатную функцию как МАКС в операторе Where

Существуют некоторые причины производительности разделить вниз using операторы:

  • IntelliSense VS работает быстрее, когда существует меньше данных для просмотра

Однако примечание, всеми этими причинами является конкретное время компиляции. Компилятор разделяет неиспользованный using с автоматически.

27
задан dlamblin 25 September 2009 в 05:51
поделиться

3 ответа

Вы можете использовать подзапрос ...

WHERE t1.field3 = (SELECT MAX(st1.field3) FROM table1 AS st1)

Но на самом деле я бы переместил это из предложения where в оператор соединения в качестве AND для предложения ON.

25
ответ дан 28 November 2019 в 04:25
поделиться

Как вы заметили, предложение WHERE не позволяет вам использовать в нем агрегаты. Это то, для чего предназначено предложение HAVING .

HAVING t1.field3=MAX(t1.field3)
38
ответ дан 28 November 2019 в 04:25
поделиться
SELECT rest.field1
FROM mastertable as m
INNER JOIN table1 at t1 on t1.field1 = m.field
INNER JOIN table2 at t2 on t2.field = t1.field
WHERE t1.field3 = (SELECT MAX(field3) FROM table1)
5
ответ дан 28 November 2019 в 04:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: