【问题标题】:counts none unique records in two tables计算两个表中的非唯一记录
【发布时间】:2015-12-24 04:18:47
【问题描述】:

我有 2 张桌子:

表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。

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

如果两个表都应该有一个像“City”这样的列,比如
城市
========
伦敦
伦敦
伦敦
巴黎
巴黎
纽约

解决方案会是什么样子???

【问题讨论】:

  • 建议:包括 create table 和 insert 命令来构建这些表,这样我们就可以更轻松地处理最终的示例。谢谢
  • 为了更好的解释添加你需要的结果
  • 编辑您的问题并提供从 Table1 到 Table2 的代码。

标签: sql oracle11g


【解决方案1】:

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

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

【讨论】:

  • 如果两个表都应该有一个像“City”这样的列,请看我上面的修改示例:解决方案看起来像什么???
【解决方案2】:

您的问题的“直接”答案似乎是:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 2021-02-22
    相关资源
    最近更新 更多