0

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

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

假设我有如下两张表,

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 

请帮我解决这个问题,我会非常满意..非常感谢:)

4

1 回答 1

4

DISTINCT只给每个条目一次,但不要完全丢弃重复的条目。你需要做的是使用GROUP BYCOUNTHAVING摆脱那些:

SELECT
  IP
FROM
  (
    SELECT IP FROM tableA
  UNION ALL
    SELECT IP FROM tableB
  )
GROUP BY
  IP
HAVING
  COUNT(*) = 1
于 2012-08-28T11:04:19.383 回答