SQL如何查询分组下存在重复episode值的movie_id?
SQL查询存在重复集数对应影视ID的实现方案
实现逻辑
- 联合
movie_id和episode两个字段分组,统计每个组合的出现次数 - 筛选出出现次数大于1的分组对应的
movie_id,去重后就是存在重复集数的影视ID - 如需输出逗号拼接的结果,使用对应数据库的字符串聚合函数处理即可
基础查询语句(逐行输出符合条件的movie_id)
SELECT DISTINCT movie_id FROM 你的表名 GROUP BY movie_id, episode HAVING COUNT(*) > 1;
执行上述语句会返回两行结果:2、3。
逗号拼接格式输出的查询语句
不同数据库的字符串聚合函数存在差异,对应实现如下:
MySQL
SELECT GROUP_CONCAT(DISTINCT movie_id SEPARATOR ',') AS duplicate_movie_ids FROM 你的表名 GROUP BY movie_id, episode HAVING COUNT(*) > 1;
PostgreSQL
SELECT STRING_AGG(DISTINCT movie_id::TEXT, ',') AS duplicate_movie_ids FROM 你的表名 GROUP BY movie_id, episode HAVING COUNT(*) > 1;
SQL Server
SELECT STRING_AGG(DISTINCT CAST(movie_id AS VARCHAR), ',') AS duplicate_movie_ids FROM 你的表名 GROUP BY movie_id, episode HAVING COUNT(*) > 1;
执行上述对应语句即可直接得到输出结果2,3。
注意:请将SQL中的
你的表名替换为你实际使用的数据表名称。
内容的提问来源于stack exchange,提问作者Melfun
相关产品推荐
相关产品推荐

