我想知道是否有办法显示一组匹配或不同的数据.. 比如说我有三个表,
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 i need-
ip |isp |infection
----------------------
1 |aaaa |malware
1 |aaaa |ddos
2 |bbbb |malware
2 |bbbb |other
3 |cccc |ddos
3 |cccc |trojan
4 |dddd |ddos
4 |dddd |trojan
5 |eeee |trojan
6 |ffff |other
6 |ffff |
问题是我不知道在这种情况下使用什么方法,我使用了这个查询 a full join
,
SELECT a. * , b. * , c. *
FROM tbl_1 a
LEFT OUTER JOIN tbl_2 b
USING ( ip, isp, infection )
LEFT OUTER JOIN tbl_3 c
USING ( ip, isp, infection )
UNION
SELECT a. * , b. * , c. *
FROM tbl_2 b
LEFT OUTER JOIN tbl_1 a
USING ( ip, isp, infection )
LEFT OUTER JOIN tbl_3 c
USING ( ip, isp, infection )
UNION
SELECT a. * , b. * , c. *
FROM tbl_3 c
LEFT OUTER JOIN tbl_1 a
USING ( ip, isp, infection )
LEFT OUTER JOIN tbl_2 b
USING ( ip, isp, infection )
但这以不同的方式给出了结果,
Result i get-
ip |isp |infection ip |isp |infection ip |isp |infection
---------------------- ---------------------- ----------------------
1 |aaaa |malware 1 |aaaa |malware NULL|NULL |NULL
NULL|NULL |NULL NULL|NULL |NULL 1 |aaaa |ddos
2 |bbbb |malware NULL|NULL |NULL NULL|NULL |NULL
NULL|NULL |NULL NULL|NULL |NULL 2 |bbbb |other
3 |cccc |ddos 3 |cccc |ddos NULL|NULL |NULL
3 |cccc |trojan NULL|NULL |NULL NULL|NULL |NULL
4 |dddd |ddos NULL|NULL |NULL NULL|NULL |NULL
NULL|NULL |NULL 4 |dddd |trojan NULL|NULL |NULL
NULL|NULL |NULL 5 |eeee |trojan NULL|NULL |NULL
NULL|NULL |NULL 6 |ffff |other NULL|NULL |NULL
NULL|NULL |NULL NULL|NULL |NULL 6 |ffff |
请帮我解决这个问题,我只想在 3 列中显示数据..
非常感谢你 :)