Меня просто смущает последовательность выполнения SQL-запроса, когда мы используем GROUP BY и HAVING с предложением WHERE. Какой из них выполняется первым? Какая последовательность?
sql
sql-server
sql-server-2005
Джонатан Леффлер
источник
источник
SET SHOWPLAN_ALL ON
Вот полная последовательность для sql server:
1. FROM 2. ON 3. JOIN 4. WHERE 5. GROUP BY 6. WITH CUBE or WITH ROLLUP 7. HAVING 8. SELECT 9. DISTINCT 10. ORDER BY 11. TOP
Итак, из приведенного выше списка вы можете легко понять последовательность выполнения
GROUP BY, HAVING and WHERE
:Получите дополнительную информацию об этом от Microsoft
источник
SELECT * FROM table1 INNER JOIN table2 ON col = col2 WHERE table1.col = @val
Здесь ON идет после join, а select идет первым, какие-либо объяснения?FROM
сначала вычислитель , а затемON
и так далее.Сначала WHERE, затем вы группируете результат запроса, и последнее, но не менее важное, предложение HAVING используется для фильтрации сгруппированного результата. Это «логический» порядок, я не знаю, как это технически реализовано в движке.
источник
Я думаю, что это реализовано в движке, как сказал Матиас: WHERE, GROUP BY, HAVING
Пытался найти ссылку в Интернете, в которой перечислена вся последовательность (т.е. "ВЫБРАТЬ" идет прямо внизу), но я не могу ее найти. Это было подробно описано в книге "Внутри Microsoft SQL Server 2005", которую я прочитал недавно, Solid Quality Learning.
Изменить: нашел ссылку: http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx
источник
В Oracle 12c вы можете запускать код в любой из следующих последовательностей:
Или
источник
Подумайте, что вам нужно сделать, если вы хотите реализовать:
Порядок: WHERE, GROUP BY и HAVING.
источник
В порядке ниже
источник
Пункт «Наличие» может предшествовать / предшествовать группе по пункту.
Пример: выберите * FROM test_std; ROLL_NO SNAME ДОБ УЧИТЬ
Выбрано 9 рядов.
выберите обучение, count ( ) count из test_std, имеющего count ( )> 1 группу по TEACH;
УЧИТЬ ГРАФ
Лангер 2 Завещания 4
источник
Это SQL-порядок выполнения запроса,
Вы можете проверить порядок выполнения на примерах из этой статьи .
Для вашего вопроса могут оказаться полезными следующие строки, взятые непосредственно из этой статьи .
Ссылки:-
источник
ВЫБОР
ИЗ
JOIN и
WHERE
GROUP BY
HAVING
ORDER BY
источник