查询按持有专辑数量降序排列的艺术家的SQL语法怎么写
艺术家专辑总数查询SQL实现
已知表结构
- Album表字段:AlbumId、Title、ArtistID
- Artist表字段:ArtistId、Name
完整正确SQL
需求为查询所有艺术家及其对应的专辑总数,按专辑总数降序排列,实现代码如下:
SELECT art.ArtistId, art.Name, COUNT(alb.AlbumId) AS 专辑总数 FROM Artist art LEFT JOIN Album alb ON art.ArtistId = alb.ArtistID GROUP BY art.ArtistId, art.Name ORDER BY 专辑总数 DESC;
如果仅需要查询至少拥有1张专辑的艺术家,可以将上述SQL中的LEFT JOIN替换为INNER JOIN即可。
原有不完整SQL问题说明
你提供的初始不完整SQL如下:
SELECT ARTISTID FROM ALBUMS GROUP BY ARTISTID HAVING COUNT(ARTISTID)
存在的问题:
- 仅关联了Album表,只能查到有专辑的艺术家ID,无法拿到艺术家姓名,也覆盖不到没有专辑的艺术家
- HAVING子句缺少判断条件,属于语法错误,且当前需求不需要做聚合后过滤,无需使用HAVING
- 没有输出专辑计数字段,也缺少按数量降序的排序逻辑
内容的提问来源于stack exchange,提问作者Allex Smith
相关产品推荐
相关产品推荐

