Mysql
 sql >> база данни >  >> RDS >> Mysql

MySql - HAVING срещу WHERE

WHERE се използва за избор на данни в оригиналните таблици, които се обработват.

HAVING се използва за филтриране на данни в резултатния набор, произведен от заявката. Това означава, че може да препраща към обобщени стойности и псевдоними в SELECT клауза.

Например, може да напише:

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

Това няма да работи при използване на WHERE защото diff е псевдоним, а не една от оригиналните колони на таблицата. Вместо това можете да напишете:

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

но тогава може да се наложи да направи всички изваждане два пъти:веднъж за избор и отново, за да произведе набора от резултати.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Многозаявка на PDO SQLSTATE[HY000]:Обща грешка

  2. Mysql оптимизация за REGEXP

  3. Как да внедря система за маркиране, подобна на SO в php/mysql?

  4. MySQL групово INSERT или UPDATE

  5. Бройте дни между две дати, с изключение на почивните дни (само за MySQL)