![](/img/trans.png)
[英]PHP - Group multiple sql results with the same ID and get the amount of each
[英]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.