【问题标题】:Sorting foreign keys by number of appearances (SQL)按出现次数对外键进行排序 (SQL)
【发布时间】:2023-03-11 22:26:01
【问题描述】:

我有一个由三个表组成的数据库,一个用于电影(id、情节、长度等),一个用于流派(id、名称)。第三个表 Movie2Genre 由 FOREIGN KEY 组成,因此我可以将电影与特定流派(idMovie、idGenre)联系起来。

然后我使用以下 sql 列出每个活跃的流派:

    SELECT DISTINCT G.name
    FROM Genre AS G
        INNER JOIN Movie2Genre AS M2G
            ON G.id = M2G.idGenre
            ORDER BY G.name

但我不想按 G.name 对它们进行排序,而是按与电影关联次数最多的类型对它们进行排序。

如果有 3 部电影与戏剧类型相关联,2 部电影与惊悚片相关联> 并且只有 1 链接 喜剧 - 我希望它们按以下顺序排列:

  1. 戏剧
  2. 惊悚
  3. 喜剧

有谁可以帮助我吗?

【问题讨论】:

  • 我为什么会被否决?..
  • 谢谢 Serpiton,我会仔细阅读!

标签: mysql sql


【解决方案1】:

所以,按计数排序是我的第一条线索,由用户 Serpiton 提供。但我的情况与链接中提供的情况有点不同。在子查询的帮助下,我能够得到我正在寻找的结果。

下面的 SQL 解决了我的问题:

SELECT G.name, M2G.totalCount AS tCount
FROM Genre AS G
 LEFT JOIN
 (
  SELECT `idGenre`, COUNT(*) AS totalCount 
  FROM `Movie2Genre`
  GROUP BY `idGenre`
 ) M2G ON G.`id` = M2G.`idGenre`
ORDER BY tCount DESC

【讨论】:

    猜你喜欢
    • 2017-02-21
    • 2016-07-23
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 2019-10-25
    • 2019-05-27
    • 2016-08-16
    • 1970-01-01
    相关资源
    最近更新 更多