从多个表中查找非重复记录

时间:2012-08-28 10:59:39

标签: mysql unique multiple-tables

我通过互联网搜索但找不到我要找的东西,可能是因为我不知道该搜索什么。

我的问题是从多个表中获取非重复记录......

如果我有两张表如下,

tableA
----------------------
code    ip
1       111.168.1.2
2       111.222.333.333
3       111.168.1.2
4       111.234.2.44
5       111.23.455.44

tableB
----------------------
code    ip                 ISP
1       111.222.333.333    newtwo
2       111.168.2.2        anon
3       111.333.453.567    def
4       111.168.2.2        tele
5       111.222.333.333    new
6       111.333.544.3      ispnew

我希望摆脱这一点,

ip
111.234.2.44
111.23.455.44
111.333.453.567
143.333.544.3

我一直试过UNION,DISTICNT和DISTINCT AND UNION,

SELECT DISTINCT IP FROM(SELECT IP FROM tableA UNION SELECT IP FROM tableB)

但它给出了所有值的唯一重复,如下所示,

ip
111168.1.2
111.222.333.333
111.234.2.44
111.23.455.44
111.168.2.2 
111.333.453.567     
111.333.544.3 

请帮助我这一个,我会非常满意......非常感谢你:)

1 个答案:

答案 0 :(得分:4)

DISTINCT只给出一次条目,但不会完全抛弃重复的条目。您必须使用GROUP BYCOUNTHAVING来摆脱这些:

SELECT
  IP
FROM
  (
    SELECT IP FROM tableA
  UNION ALL
    SELECT IP FROM tableB
  )
GROUP BY
  IP
HAVING
  COUNT(*) = 1