sql >> Databáze >  >> RDS >> Mysql

Pořadí provádění dotazu / klauzule MySQL

Vlastní provádění příkazů MySQL je trochu složitější. Norma však specifikuje pořadí interpretace prvků v dotazu. Toto je v podstatě v pořadí, které určíte, i když si myslím, že HAVING a GROUP BY může následovat po SELECT :

  • FROM doložka
  • WHERE doložka
  • SELECT doložka
  • GROUP BY doložka
  • HAVING doložka
  • ORDER BY doložka

To je důležité pro pochopení toho, jak jsou analyzovány dotazy. Nemůžete použít alias sloupce definovaný v SELECT v WHERE klauzule, například, protože WHERE je analyzován před SELECT . Na druhou stranu takový alias může být v ORDER BY doložka.

Pokud jde o skutečné provedení, to je skutečně ponecháno na optimalizátoru. Například:

. . .
GROUP BY a, b, c
ORDER BY NULL

a

. . .
GROUP BY a, b, c
ORDER BY a, b, c

oba mají účinek ORDER BY se vůbec nespustí -- a tak se nespustí po GROUP BY (v prvním případě dojde k odstranění řazení z GROUP BY a ve druhém je výsledkem nedělat nic víc než GROUP BY už dělá).



  1. Rozdělení řetězce na serveru SQL

  2. Jak opravit „Konverze se nezdařila při převodu hodnoty na datový typ“ v SQL Server

  3. Chyba syntaxe tabulky Postgres

  4. Konektor Access Dataverse je nyní k dispozici k testování