使用 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
就好像他们只是一个作曲家一样,而不是为每个人单独计算重复项。
我正在使用 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
就好像他们只是一个作曲家一样,而不是为每个人单独计算重复项。