Realmente debería mirar Normalización de la base de datos
y primero normalice su estructura agregando una tabla de unión y mantenga una relación de tablec cada relación almacenada en tablec se almacenará en la nueva tabla de unión pero no como una lista separada por comas cada fila contendrá la identificación de c y una identificación de usuario por fila, si no puede alterar su esquema, puede usar find_in_set para encontrar valores en el conjunto
select *
from tblC c
JOIN tblB b
ON (find_in_set(b.userid,c.userids) > 0)
where c.nname="new1"
Editar para normalizar el esquema
He eliminado userids columna de su tblC y en su lugar, he creado una nueva tabla de unión como tblC_user con 2 columnas c_id esto estará relacionado con la columna de identificación de tblC y el segundo userid para almacenar usuarios de relaciones de usuario para tblC ver esquema de muestra para tblC
CREATE TABLE if not exists tblC
(
id int(11) NOT NULL auto_increment ,
nname varchar(255),
PRIMARY KEY (id)
);
INSERT INTO tblC (id, nname) VALUES
('1', 'new1'),
('2', 'new2'),
('3', 'new3'),
('4', 'new4'),
('5', 'new5');
Y aquí está su tabla de unión como tblC_user
CREATE TABLE if not exists tblC_user
(
c_id int,
userid int
);
INSERT INTO tblC_user (c_id,userid) VALUES
('1','1'),
('1','2'),
('2','1'),
('2','3'),
('3','1'),
('3','4'),
('4','3'),
('4','2'),
('5','5'),
('5','2');
Arriba, si nota que no he almacenado ninguna relación separada por comas, cada relación de usuario para tblC se almacena en una nueva fila, para su conjunto de resultados en cuestión, he usado la tabla de unión en la unión, también la nueva consulta será como a continuación
select *
from tblC c
join tblC_user cu on(c.id = cu.c_id)
join tblB b on (b.userid = cu.userid)
where c.nname="new1"
Ahora, la consulta anterior se puede optimizar mediante el uso de índices, puede mantener relaciones en cascada fácilmente