首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配字段(列)的计数

匹配字段(列)的计数
EN

Stack Overflow用户
提问于 2012-10-26 16:45:44
回答 3查看 80关注 0票数 1

出于好奇,有没有一种方法可以获得2个或更多表中匹配数据的计数。也就是说,如果我们得到以下3个表,

代码语言:javascript
复制
tbl_1-
ip  |isp    |infection
----------------------
1   |aaaa   |malware
2   |bbbb   |malware
3   |cccc   |ddos
3   |cccc   |trojan
4   |dddd   |ddos

tbl_2-
ip  |isp    |infection
----------------------
1   |aaaa   |malware
3   |cccc   |ddos
4   |dddd   |trojan
5   |eeee   |trojan
6   |ffff   |other

tbl_3-
ip  |isp    |infection
----------------------
1   |aaaa   |ddos
6   |ffff   |
2   |bbbb   |other

我能得到如下所示的答案吗?

代码语言:javascript
复制
Result-
ip  |isp    |infection  |Match Count
------------------------------------
1   |aaaa   |malware    |2      
1   |aaaa   |ddos       |1      
2   |bbbb   |malware    |1
2   |bbbb   |other      |1
3   |cccc   |ddos       |2
3   |cccc   |trojan     |1
4   |dddd   |ddos       |1
4   |dddd   |trojan     |1
5   |eeee   |trojan     |1
6   |ffff   |other      |1
6   |ffff   |           |1

谢谢您:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-26 16:51:51

您需要为此使用UNION ALL (而不是UNION唯一的)以允许重复

代码语言:javascript
复制
SELECT ip, isp, infection, COUNT(*)
FROM 
(
SELECT ip, isp, infection FROM tbl_1
UNION ALL
SELECT ip, isp, infection FROM tbl_2
UNION ALL
SELECT  ip, isp, infection FROM tbl_3
) x
GROUP BY ip, isp, infection

SQLFiddle Demo

票数 5
EN

Stack Overflow用户

发布于 2012-10-26 16:49:26

您应该执行所有这三个表的联合,然后按ip、isp、感染列运行GROUP BY。

代码语言:javascript
复制
SELECT ip, isp, infection, COUNT(*) 'Match Count'
FROM
(
    SELECT * FROM tbl_1
    UNION ALL
    SELECT * FROM tbl_2
    UNION ALL
    SELECT * FROM tbl_3
) AS A
GROUP BY ip, isp, infection
票数 2
EN

Stack Overflow用户

发布于 2012-10-26 16:50:25

可以,您可以使用COUNT()函数http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_count

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13083650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档