问题陈述
数据库规范化可以极大地增强数据管理,但有时结构性限制阻碍了实施。本问题探讨了一种在无法进行标准化时将一个表中的逗号分隔值与第二个表中的值关联起来的方法。
解决方案
在提供的场景中,我们的目标是将 Notes 表的“forDepts”列中的值与 Positions 表中相应的名称组合起来。预期输出是注释 ID ('nid') 列表,其中关联的部门名称以逗号连接并分隔。
要实现此目的,我们可以利用 FIND_IN_SET() 函数和 GROUP_CONCAT() 函数。下面是 SQL 查询:
SELECT a.nid, GROUP_CONCAT(b.name ORDER BY b.id) DepartmentName FROM Notes a INNER JOIN Positions b ON FIND_IN_SET(b.id, a.forDepts) > 0 GROUP BY a.nid
说明
附加注释
提供的 PHP 代码似乎仅输出“forDepts”列中的第一个值。这可能是由于查询中使用了 LEFT JOIN。要检索所有值,请考虑使用 INNER JOIN。
此方法适用于数据以逗号分隔格式存储并且需要将其与其他值关联而无需重构数据库的情况。
以上是如何使用 SQL 连接两个以逗号分隔值的表?的详细内容。更多信息请关注PHP中文网其他相关文章!