如何编写MySQL查询语句筛选出歌曲数少于9首的专辑内所有曲目
可选查询语句
写法1:IN子查询(写法简单易读,适合中小数据量场景)
SELECT * FROM track WHERE albumName IN ( SELECT albumName FROM track GROUP BY albumName HAVING COUNT(id) < 9 );
写法2:JOIN关联查询(性能更优,适合大数据量场景)
SELECT t1.* FROM track t1 INNER JOIN ( SELECT albumName FROM track GROUP BY albumName HAVING COUNT(id) < 9 ) t2 ON t1.albumName = t2.albumName;
注意事项
- 上述语句默认以
albumName作为专辑的唯一标识,如果你数据表中存在独立的专辑ID字段,优先替换为ID做关联,避免出现不同专辑同名的统计错误 - 如果需要排除
albumName为NULL的无专辑曲目,可以在子查询的GROUP BY前添加条件WHERE albumName IS NOT NULL - 统计曲目数使用
COUNT(id)而非COUNT(*),可以避免ID为空的无效记录干扰统计结果
内容的提问来源于stack exchange,提问作者Julian Gimenez
相关产品推荐
相关产品推荐

