sql >> Database teknologi >  >> RDS >> Sqlserver

Hvorfor kan jeg ikke bruge et alias for en sammenlægning i en have-klausul?

HAVING klausulen evalueres før SELECT - så serveren kender endnu ikke til det alias.

  1. Først produktet af alle tabeller i FROM klausul er dannet.

  2. WHERE klausul evalueres derefter for at eliminere rækker, der ikke opfylder søgebetingelsen.

  3. Dernæst grupperes rækkerne ved hjælp af kolonnerne i GROUP BY klausul.

  4. Derefter grupper, der ikke opfylder search_condition i HAVING klausul er elimineret.

  5. Dernæst udtrykkene i SELECT erklæringsmålliste evalueres.

  6. Hvis DISTINCT søgeord, der er til stede i select-klausulen, er duplikerede rækker nu elimineret.

  7. UNION tages efter hvert undervalg er evalueret.

  8. Til sidst sorteres de resulterende rækker i henhold til kolonnerne specificeret i ORDER BY klausul.

  9. TOP klausul udføres.

Håber dette besvarer dit spørgsmål. Det forklarer også, hvorfor aliaset virker i ORDER BY klausul.



  1. Symfony 2:INNER JOIN på ikke-relateret tabel med doctrine-forespørgselsbygger

  2. Django migration sql til betingede triggere

  3. Indsæt data, hvis antallet af rækker er større end 0, virker ikke

  4. Base64-kodet streng til simpel sql-injektion