Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è la differenza semantica tra WHERE e HAVING?

HAVING opera sulla riga riepilogativa - WHERE sta operando sull'intero tavolo prima del GROUP BY viene applicata. (Non puoi inserire GROUP BY a parte, HAVING è una clausola riservata all'uso con GROUP BY - tralasciando il GROUP BY non cambia l'azione implicita che si verifica dietro le quinte).

È anche importante notare che per questo motivo WHERE può usare un indice mentre HAVING non può. (Nei set di risultati non raggruppati super banali potresti teoricamente utilizzare un indice per HAVING , ma non ho mai visto un Query Optimizer effettivamente implementato in questo modo).