我有一张桌子:
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
最好的解决方案是规范化架构.您应该有一个单独的表,每个子项都有一行,而不是逗号分隔的列表.然后,您可以加入此表以查找具有特定子项的父项.有关此示例,请参阅@ themite的答案.
但如果由于某种原因你不能这样做,你可以使用FIND_IN_SET:
WHERE FIND_IN_SET('Alex', children)
Run Code Online (Sandbox Code Playgroud)