出于好奇,有没有一种方法可以获得2个或更多表中匹配数据的计数。也就是说,如果我们得到以下3个表,
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我能得到如下所示的答案吗?
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谢谢您:)
发布于 2012-10-26 16:51:51
您需要为此使用UNION ALL (而不是UNION唯一的)以允许重复
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, infectionSQLFiddle Demo
发布于 2012-10-26 16:49:26
您应该执行所有这三个表的联合,然后按ip、isp、感染列运行GROUP BY。
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发布于 2012-10-26 16:50:25
可以,您可以使用COUNT()函数http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_count
https://stackoverflow.com/questions/13083650
复制相似问题