sql >> Databasteknik >  >> RDS >> Mysql

MySql - HAVING vs WHERE

WHERE används för att välja data i de ursprungliga tabellerna som bearbetas.

HAVING används för att filtrera data i resultatuppsättningen som skapades av frågan. Det betyder att den kan referera till aggregerade värden och alias i SELECT klausul.

Kan till exempel skriva:

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

Detta skulle inte fungera med WHERE eftersom diff är ett alias, inte en av de ursprungliga tabellkolumnerna. Du kan skriva istället:

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

men då kan den behöva göra alla subtraktioner två gånger:en gång för att välja och igen för att producera resultatuppsättningen.



  1. Infoga datum från formulär med PHP Mysql

  2. Prestandagränser för logiska replikeringslösningar

  3. Dela strängar med mysql

  4. MySQL:Dela upp kommaseparerad lista i flera rader