Py学习  »  DATABASE

使用MySQL workbench使用两个标准识别重复项

Rachel • 3 年前 • 1670 次点击  

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

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

我正试图找出这个数据库中重复最多的曲目的作曲家。

这是我输入的代码:

SELECT Name, Composer, Count(*) FROM Track

GROUP BY Name, Composer

HAVING Count(*)>1

ORDER BY Count(*) DESC;

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

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/127949
文章 [ 1 ]  |  最新文章 3 年前
O. Jones
Reply   •   1 楼
O. Jones    4 年前

将您的查询用作子查询,并围绕它包装另一个查询。(从子查询生成查询是 结构化的 在里面 结构化查询语言 ).

像这样的东西可能有用。

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 为此。

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

但请注意,这对您的 Composer 列作为一个整体。它将使用 John, Paul, Ringo, George 就好像他们只是一个作曲家,而不是每个人的重复数。