MySQL查询:获取存在重复question_id的response_set_id列表
解决SQL查询:找出存在重复question_id的response_set_id
没问题,我来帮你搞定这个查询需求!咱先明确一下:你需要从responses表中,找出那些同一个response_set_id下存在重复question_id的response_set_id列表,就像示例里的response_set_id=10,因为它里面question_id=3出现了两次。
你之前尝试的语句只统计了每个response_set下的question总数,没过滤重复的情况,所以达不到目的。这里给你两个可行的方案:
方案一:直接筛选重复的问题分组
SELECT response_set_id FROM responses GROUP BY response_set_id, question_id HAVING COUNT(*) > 1
逻辑解释:
- 先按
response_set_id和question_id的组合分组,这样每个分组就代表「某个问卷集下的某个具体问题」 HAVING COUNT(*) > 1会筛选出那些同一个问题在同一问卷集里出现多次的分组- 最后提取这些分组对应的
response_set_id,就是你要的结果
方案二:去重后的结果(避免同一response_set_id多次返回)
如果同一个response_set_id里有多个question_id重复(比如既有question_id=3重复,又有question_id=5重复),上面的语句会返回该response_set_id多次。如果你希望每个符合条件的response_set_id只出现一次,可以加上DISTINCT:
SELECT DISTINCT response_set_id FROM responses GROUP BY response_set_id, question_id HAVING COUNT(*) > 1
拿你的示例数据测试的话,这两个语句都会返回10,完美符合你的期望结果~
内容的提问来源于stack exchange,提问作者Kash
相关产品推荐
相关产品推荐

