【问题标题】:Find the number of duplicates in a row using sqlite使用 sqlite 查找连续重复的数量
【发布时间】:2016-02-01 10:11:55
【问题描述】:

我有一个数据库表,其中包含与每个条目名称相关的 8 个数字的条目。所以我需要编写一个查询来获取与每个联系人姓名相关联的重复号码的联系人姓名总数。 我有一个如下图所示的 sqlite 表

姓名 |数字0 |数字1 |数字2 |数字3 |数字 4 |数字 5 |数字 6 |数字7

假设我有 6000 个条目,并且有 100 个条目具有重复的数字,这些数字可以落在从 TelNum0 到 TelNum8 的任何列中。

例如:如下所示,我有一个数据库,它总共有 5 个条目,有 5 个名称,例如:

名称 Num0 Num1 Num2 Num3 Num4 Num5 Num6 Num7 1)约翰 1234 1234 1234 2)赫巴尔234 3)吉姆 9876 9876 9876 4)金 111 111 111 5)凯特666

现在,当我运行查询时,我应该得到 3 个结果,因为 John、Jim 和 Kim 有与他们关联的重复条目。

提前非常感谢

【问题讨论】:

    标签: sqlite


    【解决方案1】:

    首先,正确规范化数据:

    SELECT Name, Num0 AS Num FROM MyTable WHERE Num0 IS NOT NULL
    UNION ALL
    SELECT Name, Num1        FROM MyTable WHERE Num1 IS NOT NULL
    UNION ALL
    SELECT Name, Num2        FROM MyTable WHERE Num2 IS NOT NULL
    UNION ALL
    SELECT Name, Num3        FROM MyTable WHERE Num3 IS NOT NULL
    UNION ALL
    SELECT Name, Num4        FROM MyTable WHERE Num4 IS NOT NULL
    UNION ALL
    SELECT Name, Num5        FROM MyTable WHERE Num5 IS NOT NULL
    UNION ALL
    SELECT Name, Num6        FROM MyTable WHERE Num6 IS NOT NULL
    UNION ALL
    SELECT Name, Num7        FROM MyTable WHERE Num7 IS NOT NULL;
    
    姓名号码 ------ ---- 约翰 1234 约翰 1234 约翰 1234 赫巴 234 吉姆 9876 吉姆 9876 吉姆 9876 金111 金111 金111 凯特666

    然后只计算重复项:

    SELECT Name, Num, COUNT(*)
    FROM (SELECT Name, Num0 AS Num FROM MyTable WHERE Num0 IS NOT NULL
          UNION ALL
          SELECT Name, Num1        FROM MyTable WHERE Num1 IS NOT NULL
          UNION ALL
          SELECT Name, Num2        FROM MyTable WHERE Num2 IS NOT NULL
          UNION ALL
          SELECT Name, Num3        FROM MyTable WHERE Num3 IS NOT NULL
          UNION ALL
          SELECT Name, Num4        FROM MyTable WHERE Num4 IS NOT NULL
          UNION ALL
          SELECT Name, Num5        FROM MyTable WHERE Num5 IS NOT NULL
          UNION ALL
          SELECT Name, Num6        FROM MyTable WHERE Num6 IS NOT NULL
          UNION ALL
          SELECT Name, Num7        FROM MyTable WHERE Num7 IS NOT NULL)
    GROUP BY Name, Num
    HAVING COUNT(*) > 1;
    

    【讨论】:

      猜你喜欢
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      • 1970-01-01
      • 2011-11-01
      • 2017-07-03
      相关资源
      最近更新 更多