【问题标题】:Identifying duplicates with two criterias with MySQL workbench使用 MySQL 工作台使用两个标准识别重复项
【发布时间】:2021-12-20 05:54:16
【问题描述】:

我正在使用 MySQL Workbench 来提取列表。

这是我的数据库的样子: database

我正在尝试找出此数据库中重复曲目最多的作曲家。

这是我输入的代码:

SELECT Name, Composer, Count(*) FROM Track

GROUP BY Name, Composer

HAVING Count(*)>1

ORDER BY Count(*) DESC;

作为这个查询的结果,我得到了每首曲目的重复数量,以及作曲家。问题是我在作曲家中有重复。因此,我的代码为我提供了重复最多的曲目及其相关的作曲家。这不是我要找的。我怎样才能确定这个数据库中重复曲目最多的作曲家?

如果有帮助,这是我的查询结果: query-result

【问题讨论】:

    标签: mysql sql duplicates


    【解决方案1】:

    将您的查询用作子查询,并围绕它包装另一个查询。 (这种从子查询构建的查询是结构化查询语言结构化的一部分。

    这样的事情可能会奏效。

    SELECT Composer, SUM(tracks) duplicate_tracks
      FROM (SELECT Name, Composer, Count(*) tracks 
                   FROM Track
                  GROUP BY Name, Composer
                 HAVING COUNT(*) > 1
           ) duptracks
     GROUP BY Composer
     ORDER BY COUNT(*) DESC;
    

    它使用您的查询,就好像它是一个表(它是一个虚拟表)并在其上运行一个 GROUP BY。要以这种方式使用您的查询,它需要在 COUNT(*) 项目上命名,因此我将其命名为 tracks。它还需要子查询上的名称。我为此使用了duptracks

    外部查询将作曲家的所有重复曲目与SUM() ... GROUP BY Composer 相加,然后命令它们首先向作曲家展示重复最多的曲目。

    但请注意,这适用于整个 Composer 列的内容。它将使用John, Paul, Ringo, George,就好像他们只是一个作曲家一样,而不是单独计算每个人的重复项。

    【讨论】:

      猜你喜欢
      • 2014-01-08
      • 1970-01-01
      • 2014-01-24
      • 2010-12-05
      • 2015-12-06
      • 1970-01-01
      • 2018-07-04
      • 2020-05-01
      • 2011-05-07
      相关资源
      最近更新 更多