MySQL: сравнение нескольких строк из объединенной таблицы с основной таблицей с использованием NOT IN? - PullRequest
0 голосов
/ 15 июля 2011
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) ", однако это проверяет только первый найденный. Как я могу проверить все соответствующие строки из exerc_targetedmuscles вместо только первой?

Спасибо!

1 Ответ

0 голосов
/ 15 июля 2011

Попробуйте это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...