假设我有一个包含{id,username,firstname,lastname}的客户数据库表
如果我想知道有多少个不同名字的实例,我可以这样做:
select firstname,count(*) from Customers group by 2 order by 1;
username | count(*)
===================
bob | 1
jeff | 2
adam | 5如何编写相同的查询来只返回出现多次的名字?也就是说,在上面的例子中,只返回jeff和adam的行。
发布于 2009-07-31 14:58:10
您需要having子句,如下所示:
select
firstname,
count(*)
from Customers
group by firstname
having count(*) > 1
order by 1发布于 2009-07-31 14:59:46
我应该说,group by 2 order by 1很糟糕。如果支持,请使用适当的列名:这将极大地提高可读性。
考虑到这一点,
select firstname, count(*) c
from Customers
group by firstname
having count(*) > 1 -- Kudos to Shannon
order by c;发布于 2009-07-31 14:58:19
这就是HAVING子句的作用。我不确定这是否能在informix中工作,但请试一试:
select firstname, count(*)
from Customers
group by firstname
HAVING COUNT(*) > 1https://stackoverflow.com/questions/1213004
复制相似问题