Какова последовательность выполнения Группы, Имея и оператора Where в SQL Server?

Удостоверьтесь, что Вам действительно нужен он. Сделайте Google для "одноэлементного антишаблона" для наблюдения некоторых аргументов против него. Нет ничего по сути неправильно с ним, я предполагаю, но это - просто механизм для представления некоторого глобального ресурса/данных, так удостоверьтесь, что это - лучший способ. В особенности я нашел внедрение зависимости более полезным особенно, если Вы также используете модульные тесты, потому что DI позволяет Вам использовать дразнившие ресурсы для тестирования.

83
задан Jonathan Leffler 24 May 2017 в 04:03
поделиться

4 ответа

in order:

FROM & JOINs determine & filter rows
WHERE more filters on the rows
GROUP BY combines those rows into groups
HAVING filters groups
ORDER BY arranges the remaining rows/groups
LIMIT filters on the remaining rows/groups

169
ответ дан 24 November 2019 в 08:48
поделиться

WHERE is first, then you GROUP the result of the query, and last but not least HAVING-clause is taken to filter the grouped result. This is the "logical" order, I don't know how this is technically implemented in the engine.

7
ответ дан 24 November 2019 в 08:48
поделиться

I think it is implemented in the engine as Matthias said: WHERE, GROUP BY, HAVING

Was trying to find a reference online that lists the entire sequence (i.e. "SELECT" comes right down at the bottom), but I can't find it. It was detailed in a "Inside Microsoft SQL Server 2005" book I read not that long ago, by Solid Quality Learning

Edit: Found a link: http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx

2
ответ дан 24 November 2019 в 08:48
поделиться

Подумайте, что вам нужно сделать, если вы хотите реализовать:

  • WHERE : необходимость выполнения операций JOIN.
  • GROUP BY : вы указываете Group by, чтобы «сгруппировать» результаты в соединении, а затем после операции JOIN, после использования WHERE.
  • HAVING : HAVING предназначен для фильтрации, как указано в выражениях GROUP BY. Затем он выполняется после GROUP BY.

Порядок следующий: WHERE, GROUP BY и HAVING.

1
ответ дан 24 November 2019 в 08:48
поделиться
Другие вопросы по тегам:

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