在HAVING子句之后可以有一个WHERE子句吗?

cc.*_*cc. 16 sql where having

是否可以在HAVING子句后使用WHERE子句?

我想到的第一件事是子查询,但我不确定.

PS如果答案是肯定的,你能举一些例子吗?

Guf*_*ffa 29

不,不在同一个查询中.

where条款在having和之前发生group by.如果要在条件进入where子句的分组之前过滤掉记录,并且如果要过滤掉分组记录,则条件将在having子句中进行:

select ...
from ...
where ...
group by ...
having ...
Run Code Online (Sandbox Code Playgroud)

如果由于某些奇怪的原因,这些都不可能使用,则必须使查询成为子查询,以便可以将where子句放在外部查询中:

select ...
from (
   select ...
   from ...
   where ...
   group by ...
   having ...
) x
where ...
Run Code Online (Sandbox Code Playgroud)


Nes*_*tor 5

HAVING子句只是GROUP BY之后的WHERE子句.为什么不把你的WHERE条件放在HAVING子句中?

  • 确切地说+1.HAVING之后的WHERE子句称为AND. (3认同)

pas*_*cal 5

如果这是一个技巧问题,那么如果你提到WHERE和HAVING与子查询不同,那么它是可能的.

我猜这样的事情会起作用

HAVING value =(SELECT max(value)FROM foo WHERE crit = 123)

ps:你为什么这么问?你有特定的问题吗?

pss:好傻我,我错过了"面试*"标签......