首页 >后端开发 >php教程 >如何查询单个数据库列中存储的多个值?

如何查询单个数据库列中存储的多个值?

DDD
DDD原创
2024-12-16 10:04:20872浏览

How Can I Query for Multiple Values Stored in a Single Database Column?

查询列中的多个值

在关系数据库中,列通常为每行保存单个值。但是,在某些情况下,您可能需要在单个列中存储多个值,并用逗号等分隔符分隔。这可能会在查询数据时带来挑战,因为等式运算符等传统运算符不再按预期工作。

例如,考虑下表,它存储父子关系:

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

如果我们尝试使用查询查找有名为“Alex”的孩子的父母:

WHERE children = 'Alex'

我们将检索到零结果,即使亚历克斯是玛丽亚的孩子。这是因为我们正在寻找精确匹配,但由于子列中存在多个值,该匹配不存在。

要处理这种情况,我们需要探索替代方法:

规范化架构:

理想的解决方案是规范化架构并为子项创建一个单独的表,每个子项都有一个单独的行以及对父级的引用。这将允许基于子名称进行高效查询。

使用 FIND_IN_SET:

如果规范化模式不可行,您可以使用 FIND_IN_SET 函数,该函数检查是否值存在于逗号分隔的列表中。查询将是:

WHERE FIND_IN_SET('Alex', children)

这将返回有一个名为 Alex 的孩子的父母。但是,需要注意的是,FIND_IN_SET 并不是最有效的方法,只有在标准化不可行的情况下才应使用。

以上是如何查询单个数据库列中存储的多个值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn