Я просто путаюсь с последовательностью выполнения SQL-запроса, когда мы используем GROUP BY и HAVING с предложением WHERE. Какой из них выполняется первым? Какова последовательность?
Какова последовательность выполнения предложений Group By, Have и Where в SQL Server?
Ответ 1
по порядку:
FROM и JOIN определяют и фильтруют строки
ГДЕ больше фильтров на строках
GROUP BY объединяет эти строки в группы
ОБРАТИТЬ фильтры групп
ORDER BY упорядочивает оставшиеся строки/группы
LIMIT фильтрует оставшиеся строки/группы
Ответ 2
ГДЕ сначала, затем вы GROUP результат запроса и последнее, но не менее важное значение. HAVING-предложение принимается для фильтрации сгруппированного результата. Это "логический" порядок, я не знаю, как это технически реализовано в движке.
Ответ 3
Вот полная последовательность для сервера sql:
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
которая:
1. WHERE
2. GROUP BY
3. HAVING
Ответ 4
Я думаю, что он реализован в движке, как сказал Маттиас: ГДЕ, ГРУППА, ИМЕЮЩИЕ
пытался найти ссылку онлайн, в которой перечисляется вся последовательность (т.е. "SELECT" идет вниз внизу), но я не могу ее найти. Это было подробно описано в книге "Inside Microsoft SQL Server 2005", которую я давно не читал, Solid Solid Learning
Изменить: Найдите ссылку: http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx
Ответ 5
Подумайте, что вам нужно сделать, если вы хотите реализовать:
- WHERE: необходимо выполнить операции JOIN.
- GROUP BY. Вы указываете Group by, чтобы "группировать" результаты в соединении, после чего она должна после операции JOIN после использования WHERE.
- HAVING: HAVING предназначен для фильтрации в выражениях GROUP BY. Затем он выполняется после GROUP BY.
Порядок: WHERE, GROUP BY и HAVING.
Ответ 6
В приведенном ниже Заказе
- FROM и JOIN
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
- LIMIT
Ответ 7
В Oracle 12c вы можете запускать код как в следующей последовательности:
Where
Group By
Having
или
Where
Having
Group by
Ответ 8
Параметр "Оговорка" может иметь место до/до раздела group by.
Пример: выберите * FROM test_std; ROLL_NO SNAME DOB TEACH
1 John 27-AUG-18 Wills
2 Knit 27-AUG-18 Prestion
3 Perl 27-AUG-18 Wills
4 Ohrm 27-AUG-18 Woods
5 Smith 27-AUG-18 Charmy
6 Jony 27-AUG-18 Wills
Warner 20-NOV-18 Wills
Marsh 12-NOV-18 Langer
FINCH 18-OCT-18 Langer
Выбрано 9 строк.
выберите учить, count() count из test_std, у которого count()> 1 группа TEACH;
TEACH COUNT
Langer 2 Wills 4
Ответ 9
SELECT
ОТ
JOIN и
ГДЕ
ГРУППА
HAVING
ORDER BY