sql >> Database >  >> RDS >> Mysql

MySql - HEBBEN vs WAAR

WHERE wordt gebruikt om gegevens te selecteren in de originele tabellen die worden verwerkt.

HAVING wordt gebruikt om gegevens te filteren in de resultatenset die door de query is geproduceerd. Dit betekent dat het kan verwijzen naar geaggregeerde waarden en aliassen in de SELECT clausule.

Kan bijvoorbeeld schrijven:

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

Dit zou niet werken met WHERE omdat diff is een alias, niet een van de oorspronkelijke tabelkolommen. Je zou in plaats daarvan kunnen schrijven:

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

maar dan moet het misschien alle aftrekkingen twee keer doen:een keer om te selecteren en nog een keer om de resultatenset te produceren.



  1. Wat is de SQL-verbindingsreeks die ik moet gebruiken om toegang te krijgen tot localhost\SQLEXPRESS met Windows-verificatie of SQL-verificatie?

  2. Mysql trage zoekopdracht:INNER JOIN + ORDER BY veroorzaakt filesort

  3. Een PHP MYSQL-rangschikkingsquery krijgen om te rangschikken op basis van de totale som van de score

  4. Lijst met alle functies in Oracle Database