使用 MySQL workbench 两个条件识别重复项

Identifying duplicates with two criterias with MySQL workbench

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

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

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

这是我输入的代码:

SELECT Name, Composer, Count(*) FROM Track

GROUP BY Name, Composer

HAVING Count(*)>1

ORDER BY Count(*) DESC;

作为这个查询的结果,我得到了每首曲目的重复次数,以及作曲家。问题是我在作曲家中有重复。因此,我的代码为我提供了重复次数最多的曲目及其关联的作曲家。这不是我要找的。我如何才能识别出此数据库中重复曲目的最多的作曲家?

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

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

这样的事情可能会奏效。

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;

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

外部查询将作曲家的所有重复曲目加起来 SUM() ... GROUP BY Composer 然后命令它们首先向作曲家呈现最重复的曲目。

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