如何编写SQL查询参与美国歌手最多的Edition?现有语句报错求修正
正确SQL解决方案
你的原SQL存在几个关键语法错误:
- 未通过
JOIN关联两张表,直接引用singer表字段会导致字段找不到 - SQL语句顺序错误,
WHERE子句必须放在GROUP BY之前 - 条件判断用了
==,SQL里应该用= - 查询目标是
Edition,但原语句选了Singer_ID,不符合需求
以下是满足需求的正确SQL:
SELECT m.Edition, COUNT(DISTINCT m.Singer_ID) AS us_singer_count FROM music m JOIN singer s ON m.Singer_ID = s.Singer_ID WHERE s.nationality = 'USA' GROUP BY m.Edition ORDER BY us_singer_count DESC LIMIT 1;
语句说明:
- 使用
JOIN通过Singer_ID关联music(别名m)和singer(别名s)两张表 WHERE子句筛选出美国国籍的歌手GROUP BY m.Edition按专辑版本分组COUNT(DISTINCT m.Singer_ID)统计每个版本下的不同美国歌手数量(避免同一歌手多次参与同一版本重复计数)ORDER BY us_singer_count DESC按歌手数量降序排序,LIMIT 1取数量最多的版本
如果需要展示所有版本的歌手数量(不只最多的那个),可以去掉LIMIT 1。
内容的提问来源于stack exchange,提问作者user19965401
相关产品推荐
相关产品推荐

