zerkms的解决方案的工作,毫无疑问。正如Steve Wellens指出的那样,您的问题是由不正确的数据库模式造成的。一列中不应有多个值,因为它违反了第一条正常法则。相反,你至少应该制作两张桌子。举例来说,假设你有成员谁拥有动物:
table member (member_id, member_name)
table member_animal (member_id, animal_name)
更妙的是:因为许多用户可以有相同类型的动物,你应该创建3个表:
table member (member_id, member_name)
table animal (animal_id, animal_name)
table member_animal (member_id, animal_id)
你可以填充你的表是这样,例如:
member (1, 'Tomas')
member (2, 'Vincent')
animal (1, 'cat')
animal (2, 'dog')
animal (3, 'turtle')
member_animal (1, 1)
member_animal (1, 3)
member_animal (2, 2)
member_animal (2, 3)
而且,回答你最初的问题,这就是,如果你想知道每个用户有多少动物有,你会做什么:
SELECT member_id, COUNT(*) AS num_animals
FROM member
INNER JOIN member_animal
USING (member_id)
INNER JOIN animal
USING (animal_id)
GROUP BY member_id;
这个线程也已经回答了[这里](https://开头计算器。com/questions/5033047/mysql-query-finding-values-in-a-comma-separated-string/47069224)#47069224) – Delickate