我花了几个小时寻找这个问题的解决方案,但没有任何运气.我有一张健身表,如下所示.健身表中的每个项目都可以有多个目标肌肉,这些目标肌肉列在目标肌肉表中.
健身表:
id |
---|
1 |
2 |
目标肌肉表:
id | muscle_key | workout_id |
---|---|---|
1 | a | 1 |
2 | b | 1 |
3 | c | 1 |
4 | a | 2 |
5 | b | 2 |
我需要获取训练表中与给定集合中的所有目标肌肉关键点完全匹配的所有项目,不是更少也不是更多.例如,给定一组肌肉关键点:
(A、B)
所需输出将为:
id |
---|
2 |
不应 Select 锻炼id=1的行,因为它包含一个额外的肌肉键(C).
我正在使用以下查询:
SELECT id
FROM workouts
LEFT JOIN target_muscles ON workouts.id = target_muscles.workout_id
WHERE target_muscles.muscle_key IN (A、B)
GROUP BY workouts.id
HAVING COUNT(DISTINCT target_muscles.muscle_key) = 2
上面的查询也返回锻炼id=1,而不是只返回2.我如何实现这一点?
如有任何帮助,我们不胜感激.