单个查询打印计数大于10的所有行

时间:2014-05-14 19:41:13

标签: mysql

我有一个名为Table1的表,其定义如下。

Id  int False   
Source  nvarchar(MAX)   True    
Dest    nvarchar(MAX)   True    
Port    nvarchar(MAX)   True    
DgmLen  nvarchar(MAX)   True    
Flags   nvarchar(MAX)   True    
Payload nvarchar(MAX)   True    

现在我要打印此表的所有行,其中" source"计数大于10。

首先,我使用此查询来获取表中的源数:

Select Source,count(*) t_count from Table1 group by Source

它已经获取了以下数据:

Source            t_count
2-170.125.32.3  1
2-172.125.32.10 1
2-190.125.32.10 11
2-190.125.32.3  1
2-192.125.32.10 1
2-192.125.32.3  6

现在我要打印所有行" Source = 2-190.125.32.10"因为它的t_count大于10。

如何在单一查询中撰写此内容。

4 个答案:

答案 0 :(得分:0)

  

有"来源= 2-190.125.32.10"

关键字:having

Select Source,count(*) t_count from Table1 group by Source HAVING t_count > 10

和btw:如果你是通过Soruce进行分组 - 那么总会有一个结果行,它与某些源相匹配 - 这就是分组的重点。

答案 1 :(得分:0)

如果我找对你,那么: -

select * from Table1 where Source in
(
Select Source from Table1 group by Source having count(*) > 10
)

这会返回Table1列值出现超过10次的Source行中的所有行。

编辑: -

select * from Table1 t1 join
(Select Source, Dest from Table1 group by Source, Dest having count(*) > 10) t2
on t1.Source = t2.Source and t1.Dest = t2.Dest

此处,表t2返回出现超过10次的Source, Dest组合,并将其与基表Table1连接。

答案 2 :(得分:0)

您的单个​​查询应该是这样的

Select Source,count(*) t_count from Table1 group by Source HAVING t_count > 10

类似EXAMPLE制作

答案 3 :(得分:0)

Select 
s.Source,
s.Dest,
s.Port,
s.DgmLen,
s.Flags,
s.Payload
from Table1 s
join
(
  select 
  source,
  count(*) as tot
  from Table1
  group by source
  having tot > 10
)s1
on s1.source = s.source