Если вы хотите отфильтровать вашу таблицу на основе списка с разделением запятыми с помощью идентификатора, мой подход заключается в добавлении дополнительных запятых в начале и в конце списка, а также в начале и в конце идентификатора,например.1
становится ,1,
, а список становится ,1,2,3,4,
.Причина этого заключается в том, чтобы избегать неоднозначных совпадений, таких как 1, совпадений в списке 21 или 12.
Кроме того, EXISTS
хорошо подходит в этой ситуации, которая вместе с функцией INSTR
должна работать:
SELECT SUM(`marks`)
FROM `student_mark` sm
WHERE EXISTS(SELECT 1 FROM `class_table`
WHERE `teac_id` = '1' AND
INSTR(CONCAT(',', student_id, ','), CONCAT(',', sm.student_id, ',')) > 0)
Демо
НО вы не должны хранить связанные идентификаторы в одной ячейке как список, разделенный запятыми - это должен быть столбец внешнего ключа для формированияправильное отношение.Тогда присоединения станут тривиальными.