sql >> Databáze >  >> RDS >> Sqlserver

Proč nemohu použít alias pro agregaci v klauzuli have?

HAVING klauzule je vyhodnocena před SELECT - takže server ještě o tomto aliasu neví.

  1. Nejprve součin všech tabulek v FROM je tvořena věta.

  2. WHERE klauzule je poté vyhodnocena, aby se odstranily řádky, které nesplňují podmínku vyhledávání.

  3. Dále jsou řádky seskupeny pomocí sloupců v GROUP BY klauzule.

  4. Potom skupiny, které nesplňují search_condition v HAVING klauzule jsou odstraněny.

  5. Dále výrazy v SELECT seznam cílů příkazů se vyhodnotí.

  6. Pokud DISTINCT klíčové slovo v klauzuli select, duplicitní řádky jsou nyní odstraněny.

  7. UNION se bere po vyhodnocení každého dílčího výběru.

  8. Nakonec jsou výsledné řádky seřazeny podle sloupců zadaných v ORDER BY klauzule.

  9. TOP klauzule je provedena.

Doufám, že to odpoví na vaši otázku. Také vysvětluje, proč alias funguje v ORDER BY klauzule.



  1. Ukázka MySQL pro Visual Basic 6.0 - čtení/zápis

  2. Další chyba UnicodeEncodeError při použití metody pandas to_sql s MySQL

  3. Volání procedury Oracle PL/SQL v Javě pomocí CallableStatement s booleovským parametrem IN způsobí chybu Oracle PLS-00306:

  4. PDO::fetchAll vs. PDO::fetch ve smyčce