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也是如此;-)可能重复我只是在取笑你的成语:-)我不想跟他搞技术性的交流,因为他似乎知道得不多(根据他的问题)。