繁体   English   中英

SQL - 限制要分组的结果数量

[英]SQL - Limit the amount of results to group by

我正在尝试运行此查询;

SELECT artist, song, track, album, album_id, art, COUNT(artist) AS artistCount FROM listening_artist GROUP BY artist ORDER BY COUNT(artist) DESC

哪个工作正常,但我希望它只使用数据库中的30个结果,而不是完整的数据库。

我试过这个

SELECT artist, song, track, album, album_id, art, COUNT(artist) AS artistCount FROM listening_artist LIMIT 30 GROUP BY artist ORDER BY COUNT(artist) DESC

什么都不返回。

我不是在这之后

SELECT artist, song, track, album, album_id, art, COUNT(artist) AS artistCount FROM listening_artist GROUP BY artist LIMIT 30 ORDER BY COUNT(artist) DESC

因为这个限制太迟了。

它的用途是什么

这是从最近30首播放的歌曲中选择用户最多听过的艺术家。

我的数据库

+------------+----------+---------+---------+------------+-------+
|   artist   |   song   |  track  |  album  |  album_id  |  art  |
+------------+----------+---------+---------+------------+-------+
| T-Swift    |  22      | *NULL*  |   Red   |  9282781   | URL   |
|            |          |         |         |            |       |
+------------+----------+---------+---------+------------+-------+

任何帮助表示赞赏。 谢谢!

正如评论中已经指出的那样,您的第二个查询不返回任何结果,因为语法无效。

而是使用子选择来限制结果:

SELECT artist, song, track, album, album_id, art, COUNT(artist) AS artistCount
FROM (
       SELECT *
       FROM listening_artist
       LIMIT 30
     ) AS recent_listening_artist
GROUP BY artist
ORDER BY COUNT(artist) DESC

在子选择内部,您可以添加其他顺序,例如通过播放歌曲的时间戳。

您没有指定实际的DBMS,因此您可能需要稍微调整语法(这是MySQL),但它至少应该为您提供正确方向的提示。

请注意,这只会为每位艺术家提供一行,这使得输出中的曲目或专辑有点毫无意义。 有关小型演示,请参阅此MySQL小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM