从逗号分隔列中提取用户名
考虑一个场景,其中您有多个表:tblA(用户)、tblB(用户名)、和 tblC(以逗号分隔的用户 ID 的命名法)。目标是在搜索特定命名法值时检索所有用户名。
现有方法和限制
提供的查询尝试使用交叉联接和子字符串函数从逗号分隔值中提取第一个用户 ID。然而,当有多个用户 ID 与命名法关联时,这种方法效率低下,并且不能提供准确的结果。
规范化架构和改进的查询
建议通过引入连接表来标准化数据库模式。 tblC_user 表应包含两列:c_id(引用 tblC)和 userID(引用 tblB)。这将消除 tblC 中以逗号分隔的用户 ID 的需要。
以下查询演示如何使用规范化模式提取用户名:
SELECT * FROM tblC c JOIN tblC_user cu ON (c.id = cu.c_id) JOIN tblB b ON (b.userid = cu.userid) WHERE c.nname = "new1";
此查询将有效检索所有关联的用户名具有“new1”命名法。
的好处规范化
规范化数据库模式具有多种优势:
以上是如何从数据库中以逗号分隔的列有效检索用户名?的详细内容。更多信息请关注PHP中文网其他相关文章!