繁体   English   中英

MySQL:使用 NOT IN 将联合表中的多行与主表进行比较?

[英]MySQL: comparing multiple rows from a joint table to the primary table using NOT IN?

SELECT SQL_CALC_FOUND_ROWS e.*
FROM exercises e
LEFT JOIN exercise_targetedmuscles em ON em.exerciseID = e.exerciseID
WHERE (em.targetedMuscleID NOT IN(15,16,17,14,3,12,9,8,7,18,4,2) AND em.isPrimary = 1)
GROUP BY e.exerciseID
ORDER BY e.name ASC

我想确保锻炼的目标肌肉(可能有很多)都不在列表中“(15,16,17,14,3,12,9,8,7,18,4, 2)”,但是这只检查它找到的第一个。 如何检查来自exercise_targetedmuscles的所有匹配行,而不仅仅是第一行?

谢谢!

尝试这个:

SELECT SQL_CALC_FOUND_ROWS e.*
FROM exercises e
WHERE NOT EXISTS
(
    SELECT 1
      FROM  exercise_targetedmuscles em
        WHERE  em.exerciseID = e.exerciseID
                AND   em.targetedMuscleID IN(15,16,17,14,3,12,9,8,7,18,4,2)
        AND em.isPrimary = 1
)
GROUP BY e.exerciseID
ORDER BY e.name ASC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM