SQL HAVING子句中的算术运算符

时间:2013-11-27 06:50:20

标签: mysql sql database having dml

我可以在SQL中使用算术运算符吗?因为据我所知,算术运算符只允许在SELECT和WHERE子句中使用。但是下面的代码对我来说很有意义,但我知道它没有任何意义。有什么建议吗?

 SELECT E.name
 FROM Example E
 GROUP BY E.name
 HAVING COUNT(*) + 2 > 4

2 个答案:

答案 0 :(得分:1)

如果您想要更复杂的算术表达式,可以使用子查询:

select
    *
from
(
    select
        cnt = COUNT(*) + 2
        , E.Name
    from
        Example E
    group by
        E.name
) as subQ
where
    subQ.cnt > 4

答案 1 :(得分:1)

是的,您可以在HAVING子句中使用“算术运算符”。

HAVING子句中的表达式将被计算为布尔值。


注意:请确保优先顺序符合您的预期,例如

( COUNT(*) + 2 ) > 4 

VS

COUNT(*) + ( 2 > 4 )

在您的示例中,实际上并不需要添加;表达式可以替换为逻辑等效的:

COUNT(*) > 2