sql >> Base de Datos >  >> RDS >> Mysql

DONDE vs TENER

¿Por qué necesita colocar columnas que usted mismo crea (por ejemplo, "seleccione 1 como número") después de HAVING y no DÓNDE en MySQL?

WHERE se aplica antes de GROUP BY , HAVING se aplica después (y puede filtrar en agregados).

En general, no puede hacer referencia a alias en ninguna de estas cláusulas, pero MySQL permite hacer referencia a SELECT alias de nivel en GROUP BY , ORDER BY y HAVING .

¿Y hay alguna desventaja en lugar de hacer "DONDE 1" (escribir la definición completa en lugar de un nombre de columna)

Si su expresión calculada no contiene ningún agregado, colóquelo en WHERE Lo más probable es que la cláusula sea más eficiente.