我有一张这样的table:
id name children
1 Roberto Michael,Dia
2 Maria John,Alex
3 Mary Alexandre,Diana
我的问题是;我想知道谁的孩子叫亚历克斯。
我不能用 "where children = 'Alex'"
因为我在同一个单元格中有多个名称。
所以我用 "where children LIKE '%Alex%'"
-这看起来很聪明,但同时我得到了所有的开始像亚历克斯:(亚历山德拉或我想得到迪亚,但结果是迪亚和戴安娜:(
我怎样才能在那个数据类型中得到一个alex?
我希望我能用我糟糕的英语来解释我的问题
4条答案
按热度按时间cuxqih211#
最好的解决方案是规范化您的模式。您应该有一个单独的表,每个子表有一行,而不是逗号分隔的列表。然后可以与此表联接以查找具有特定子级的父级。请参见@themite的答案以获取此示例。
但如果你因为某种原因不能这样做,你可以用
FIND_IN_SET
:watbbzwu2#
我宁愿为孩子和父母做不同的table之类的。
家长桌
儿童桌
.... 等等
sbtkgmzw3#
你应该把数据分成两个表。
第一个看起来像这样
第二个是这样的
等等。
然后你就可以做你想要的查询而不必担心
like
你的数据更有用hrysbysz4#
所以你想在这里摆两张table。
现在您可以使用连接或exists更有效地查询: