SQL COUNT GROUP BY多个表

时间:2016-06-27 20:31:20

标签: sql join count group-by

我有10个+表都有一列'错误消息'。每个错误消息都有一个唯一的ID。我需要编写一个脚本来返回所有表之间最常见的前5个错误。以下是当前结构的示例以及所需的结果。

Table 1
**Error Message        
     Mes 1              
     Mes 2                
     Mes 3                    

Table 2
**Error Message     
     Mes 1
     Mes 2            
     Mes 3               
     Mes 4
     Mes 4 
     Mes 4 
     Mes 4                       

Table 3
**Error Message                         
     Mes 5
     Mes 1                 
     Mes 6
     Mes 2                

期望的结果

**Error Message      Error Count**     
     Mes 4                4
     Mes 1                3
     Mes 2                3
     Mes 3                2
     Mes 5                1  

1 个答案:

答案 0 :(得分:4)

select errMsg, count(*) as errCnt
from
(
    select errMsg from table1
    union all 
    select errMsg from table2
    union all 
    select errMsg from table3
    ...
) tmp
group by errMsg
order by count(*) desc

根据您的数据库引擎添加limit 5top 5ROWNUM <= 5