一尘不染

查询列中的多个值

mysql

我有一张像这样的桌子:

id     name            children
1      Roberto         Michael,Dia
2      Maria           John,Alex
3      Mary            Alexandre,Diana

我的问题是;我想找到谁有一个叫亚历克斯的孩子。

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

所以我用"where children LIKE '%Alex%'"-看起来很聪明,但同时我像Alex一样开始一切:(
Alexandre或我想获得dia,但结果是dia和diana :(

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

我希望我能用我的英语不好来解释我的问题:D


阅读 228

收藏
2020-05-17

共1个答案

一尘不染

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

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

WHERE FIND_IN_SET('Alex', children)
2020-05-17