如何找到最流行的音乐类型?

时间:2017-04-13 04:12:29

标签: mysql database

所以我有两个表,表1:音乐风格是带有StyleID和StyleName的字段,StyleName是一个类型,表2:带有字段SyleID和EntertainerID的艺人。

我需要帮助查找是:

1)艺人数据库中最流行的音乐风格是什么?

这是我到目前为止所做的:

 SELECT StyleID, StyleName 
   from EA_Music_Styles
  WHERE StyleID = (SELECT StyleID 
                     from EA_Entertainer_Styles 
                    WHERE StyleID = (SELECT MAX(StyleID) 
                                       FROM EA_Entertainer_Styles));

但是我得到了一个错误代码“Subquery返回超过1行”

我需要帮助,不知道该怎么办?第一次初学者。

以下是表格: 表格1: StyleID StyleN 1 40年代的舞厅音乐 2 50的音乐 3 60的音乐 4 70年代的音乐 5 80的音乐 6个国家 7经典 8 Classic Rock&滚 9说唱 10当代 11乡村摇滚 12猫王 13民俗 14室内乐 15爵士乐 16卡拉OK 17摩城 18现代摇滚 19节奏和蓝调 20 Show Tunes 21标准 22个前40名 23品种 24莎莎 25 90年代的音乐

表2:

StyleID EntertainerID 3 1003 3 1008 4 1010 6 1007 6 1008 7 1009 7 1011 7 1012 8 1003 10 1001 10 1013 11 1007 13 1004 13 1012 14 1009 14 1011 15 1005 15 1013 17 1002 19 1002 19 1005 20 1001 20 1011 21 1001 21 1009 21 1010 22 1006 22 1010 23 1002 23 1006 24 1005 24 1006

结果会输出两个StyleID,7& 21和StyleName将是古典&标准

3 个答案:

答案 0 :(得分:0)

您只需加入两张桌子即可获得演艺人员的最大数量

 SELECT ms.StyleName, count(*) most_popular
   from EA_Music_Styles ms
         INNER JOIN A_Entertainer_Styles es
         ON ms.StyleID = es.StyleID
  group by ms.StyleName
  order by 2 desc
  limit 1

这会给你最流行的(我认为它是有更多行的那个)StyleName。我计算StyleName的次数,并命令它只获取第一个结果。

答案 1 :(得分:0)

以下是解决问题的方法。

  1. 通过StyleID在您的艺人表用户组中同时选择计数。这将为您提供styleID计数,您可以按降序排序,并限制1以查找最常用的

    select StyleID, count(StyleID) c from EA_Entertainer_Styles
    group by StyleID
    order by c desc
    limit 1;
    
  2. 现在使用styleID表单从表Music中获取StyleName。

    select StyleName from EA_Music_Styles
    where StyleID = id_from_step1
    
  3. 您可以在单个查询中使用这两个,如Jorge Campos

    所示的答案一样加入它们

答案 2 :(得分:0)

Max为您提供数据库中最高的数字,而不是最常用的数字。你应该使用计数。

下一个例子应该给出正确的结果。

select StyleName from EA_Music_Styles
where StyleID = (
     select StyleID
     from EA_Entertainer_Styles
     group by StyleID
     order by count(StyleID) desc
     limit 1)