在两个表中没有计算唯一记录

时间:2015-12-23 16:51:08

标签: sql oracle11g

我有两张桌子:

表1:

CustomerID   CustomerName              Address           IP
================================================================
87           Wartian Herkku           Torikatu 38        1.1.1.1
567          Wartian Herkku           Torikatu 38        1.1.1.1
778          Wartian Herkku           Torikatu 38        1.1.1.1
88           Wellington Importadora   Rua do Mercado, 4  2.2.2.2
6732         Wellington Importadora   Rua do Mercado, 4  2.2.2.2
10           White Clover Markets     305 - 14th Ave. 5  3.3.3.3

表2:

CustomerID   CustomerName           Address             IP
==============================================================
778          Wartian Herkku           Torikatu 38        1.1.1.1
6732         Wellington Importadora   Rua do Mercado, 4  2.2.2.2
10           White Clover Markets     305 - 14th Ave. 5  3.3.3.3

Table1的客户拥有多个customerID,但IP是唯一的。合并来自Table1的customerID后,我得到Table2。

我想要Table2中已解析的记录的计数,它在SQL(Oracle)中的表1中只有一个条目??

如果两个表都有一个类似" City"的列,例如

========
伦敦
伦敦
伦敦
巴黎
巴黎
纽约

解决方案怎么样?

2 个答案:

答案 0 :(得分:0)

您可以在count上使用带有条件的having子句来查找table1中出现一次的记录,然后使用in条件过滤table2:

SELECT *
FROM   table2
WHERE  CustomerName IN (SELECT   CustomerName
                        FROM     table1
                        GROUP BY CustomerName
                        HAVING   COUNT(*) = 1)

答案 1 :(得分:0)

"直接"回答你的问题似乎是:

select count(*)
from table2 t2
where t2.CustomerName in (select t1.CustomerName
                          from Table1 t1
                          group by t1.CustomerName
                          having count(*) = 1
                         );