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

MySql - HAVING vs WHERE

WHERE bruges til at vælge data i de originale tabeller, der behandles.

HAVING bruges til at filtrere data i det resultatsæt, der blev produceret af forespørgslen. Det betyder, at den kan referere til samlede værdier og aliaser i SELECT klausul.

kan f.eks. skrive:

SELECT t1.val - t2.val diff
FROM t1 JOIN t2 ON (some expression)
HAVING diff > 10

Dette ville ikke fungere med WHERE fordi diff er et alias, ikke en af ​​de originale tabelkolonner. Du kunne i stedet skrive:

SELECT t1.val - t2.val diff
FROM t1 JOIN t2 ON (some expression)
WHERE t1.val - t2.val > 10

men så skal den muligvis foretage alle subtraktioner to gange:én gang for at vælge og igen for at producere resultatsættet.



  1. GROUP BY-adfærd, når der ikke er nogen aggregerede funktioner i SELECT-udtrykket

  2. PDO IN() Array Statement OG en pladsholder

  3. MySQL - Russiske tegn vises forkert

  4. Hvad er CHAR_LENGTH() i MySQL?