Вы можете использовать функцию FIND_IN_SET
.
WHERE FIND_IN_SET(a.list,products)>0;
Затем вызовите процедуру, как показано ниже.
call PRODUCT('A,B,C,D');
Если у вас есть индекс на a.list
, вы можете попробовать следующее.
CREATE PROCEDURE PRODUCT
(
IN products varchar(64)
)
BEGIN
SET @sql = concat('SELECT COUNT(*) FROM t1 a WHERE a.list in(','''',REPLACE(products,',',''','''),'''',')');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END;