sql having 和 where区别

相似点:

我有一个表test928,里面有一个字段叫mobile,查找里面189开头的所有手机号码:

SELECT * FROM `test928` having mid(`mobile`,1,3) =189

也可以用:

SELECT *
FROM `test928`
WHERE left( `mobile` , 3 ) =189

那 having 和 where 区别在哪呢?

我翻看了 w3c网站说:在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

理解了一下:

SELECT * FROM `mj_payment_order_list`  group by username  where sum(`order_amount`)>1000 无效

SELECT * FROM `mj_payment_order_list`  group by username  having sum(`order_amount`)>1000 有效。