在列中查询多个值

use*_*658 -1 php mysql

我有一张桌子:

id     name            children
1      Roberto         Michael,Dia
2      Maria           John,Alex
3      Mary            Alexandre,Diana
Run Code Online (Sandbox Code Playgroud)

我的问题是; 我想找一个名叫亚历克斯的孩子.

我无法"where children = 'Alex'"在SQL中使用,因为我在同一个单元格中有多个名称.

所以我使用"where children LIKE '%Alex%'"- 看起来很聪明但同时我得到所有开始像亚历克斯:(亚历山大或我想得到dia但结果是dia和戴安娜:(

如何在该数据类型中获得单个Alex?

我希望我用可怕的英语来解释我的问题:D

Bar*_*mar 6

最好的解决方案是规范化架构.您应该有一个单独的表,每个子项都有一行,而不是逗号分隔的列表.然后,您可以加入此表以查找具有特定子项的父项.有关此示例,请参阅@ themite的答案.

但如果由于某种原因你不能这样做,你可以使用FIND_IN_SET:

WHERE FIND_IN_SET('Alex', children)
Run Code Online (Sandbox Code Playgroud)