所以我有两个表,表1:音乐风格是带有StyleID和StyleName的字段,StyleName是一种流派,表2:带有字段SyleID和EntertainerID的entertainers。
我需要帮助查找的是:
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行“
我需要帮助,不知道该怎么做?初学者。
表一: StyleID StyleN 1 40的交际舞音乐2 50的音乐3 60的音乐4 70的音乐5 80的音乐6乡村7古典8古典摇滚9 Rap 10当代11乡村摇滚12猫王13民间14室内乐15爵士16卡拉OK 17摩城18现代摇滚19节奏和布鲁斯20显示曲调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 1002 19 1005 20 1001 20 1011 211001 21 1009 21 1010 22 1006 22 1010 23 1002 23 1006 24 1005 24 1006
因此,结果将输出两个StyleID,7& 21和StyleName,这将是经典和标准
发布于 2017-04-13 12:29:16
你只需要连接你的两个表,并获得最大的表演者数量
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的出现次数,并对其进行了排序,只得到了第一个结果。
发布于 2017-04-13 12:32:58
下面是你解决这个问题的方法。
从EA_Entertainer_Styles group by StyleID order by C desc 1中选择StyleID,count( styleID ) c;
select StyleName from EA_Music_Styles where StyleID = id_from_step1
您可以在一个查询中使用这两个查询,方法是将它们连接起来,如Jorge Campos所示
发布于 2017-04-13 12:39:01
Max为您提供数据库中最高的数字,而不是最常用的数字。为此,您应该使用count。
下一个例子应该会给出正确的结果。
select StyleName from EA_Music_Styles
where StyleID = (
select StyleID
from EA_Entertainer_Styles
group by StyleID
order by count(StyleID) desc
limit 1)https://stackoverflow.com/questions/43383382
复制相似问题