在where子句中使用having

时间:2015-04-12 07:37:51

标签: sql postgresql having

如果我有下表:

my_table:    
  varchar name
  int     score

我想做以下查询:

select name from my_table group by name having count(*)>3
union
select name from my_table where name like '%xyz'

有没有办法在没有联合的情况下进行此查询?

要明确:我希望表 OR 中包含三个以上条目的所有名称都回答类似条款'%xyz'

3 个答案:

答案 0 :(得分:1)

以下查询只会在分组之前获取与like子句匹配的名称:

SELECT name,count(*) as num FROM my_table GROUP BY name HAVING num > 3 OR name like '%xyz'

编辑:上述查询已被更改为允许使用name或num子句来接受行。

答案 1 :(得分:0)

select name,count(*) as num 
from my_table 
group by name having num>3
where name like '%xyz'

答案 2 :(得分:0)

联合仅在链接两个表时使用。

我认为你在找这样的东西?

SELECT name,count(*) as num 
FROM my_table 
GROUP BY name 
HAVING num > 3 OR name like '%xyz'

http://sqlfiddle.com/#!9/1b6a0/2/0

在阅读预期结果后编辑以匹配OP的问题。