Php 一列中有多个值的查询

Php 一列中有多个值的查询,php,mysql,Php,Mysql,我有一张像这样的桌子: id name children 1 Roberto Michael,Dia 2 Maria John,Alex 3 Mary Alexandre,Diana 我的问题是; 我想知道谁有一个叫亚历克斯的孩子 我不能在SQL中使用“where children='Alex',因为我在同一个单元格中有多个名称 所以我用了“在孩子们喜欢“%Alex%”的地方”

我有一张像这样的桌子:

id     name            children
1      Roberto         Michael,Dia
2      Maria           John,Alex
3      Mary            Alexandre,Diana
我的问题是; 我想知道谁有一个叫亚历克斯的孩子

我不能在SQL中使用
“where children='Alex'
,因为我在同一个单元格中有多个名称

所以我用了
“在孩子们喜欢“%Alex%”的地方”
——看起来很聪明,但是 同时,我也像亚历克斯一样开始了比赛 或者我想得到dia但结果是dia和diana:(

我怎样才能得到该数据类型中的单个Alex


我希望我能用糟糕的英语解释我的问题:你应该把数据分成两个表

第一个看起来像这样

ID    Name
1     Roberto
2     Maria
3     Mary
ParentId     child
1            Michael
1            Dia
2            John
2            Alex
第二个是这样的

ID    Name
1     Roberto
2     Maria
3     Mary
ParentId     child
1            Michael
1            Dia
2            John
2            Alex
等等


然后,您就可以执行所需的查询,而不必像那样担心
,而且您的数据更有用

最好的解决方案是规范化您的架构。您应该有一个单独的表,每个子级有一行,而不是逗号分隔的列表。然后,您可以使用此表来查找具有特定chil的父级d、 请参见@themite的答案,以了解这方面的示例

但是,如果由于某种原因无法做到这一点,您可以使用:


这就是为什么你想在这里有两张桌子

parents:
id  name
1   Roberto  
2   Maria
3   Mary

children:
id  parentid name
1   1        Michael
2   1        Dia
3   2        John
4   2        Alex
5   3        Alexandre
6   3        Diana
现在,您可以使用联接或exists更有效地查询:

SELECT *
FROM Parents
WHERE EXISTS(
    SELECT * 
    FROM Children 
    WHERE parentid=Parents.id 
      AND Children.name='Alex'
 )

我宁愿为孩子和父母做不同的桌子,就像这样

家长桌

parent_id     name            
1             Roberto         
2             Maria           
3             Mary     
儿童桌

children_id  parent_id  name
1            1          Michael     
2            1          Dia 
3            2          John

…等等

参见规范化。这是关系数据库的基础。在一个表字段下有多个子表不是一个好主意。最好创建第二个表,在其中存储子表的名称,并使用外键将其连接到主表。草莓和kidA都说了同样的话:yo你需要把“children”分成一个单独的表格,然后把它链接回“parents”。这个过程叫做。父母和孩子之间的“link”叫做a。FoggyDay也是如此;-)可能重复我只是在取笑你的成语:-)我不想跟他搞技术性的交流,因为他似乎知道得不多(根据他的问题)。