在使用数据库时,您可能会遇到需要基于包含多个逗号的字段连接两个表的情况- 分隔值。在这种情况下,传统的联接可能不够。
考虑提供的示例,其中您有一个电影表,其中的类别列包含以逗号分隔的类别 ID。目标是执行一个查询,从电影表中排除类别列,而是从类别表中选择匹配的类别名称,并以数组形式返回它们。
要实现此目的,您可以使用以下查询:
SELECT m.id, GROUP_CONCAT(c.name) AS categories FROM movies m JOIN categories c ON FIND_IN_SET(c.id, m.categories) GROUP BY m.id
解释:
FIND_IN_SET 函数检查是否在字符串中找到子字符串。如果找到则返回子字符串的位置,否则返回 0。在本例中,它检查电影表的类别列中是否存在类别表中的类别 ID。
查询使用 GROUP_CONCAT 连接每个电影 ID 的 JOIN 操作返回的类别名称。按 m.id 分组可确保每部电影的类别分组在一起。
输出:
查询的输出应类似于以下内容:
| id | categories | |---:|-------------------| | 1 | Comedy, Drama | | 2 | Action, Drama | | 4 | Other, Dance |
此技术根据逗号分隔的类别列表有效地连接两个表,允许您以数组格式检索类别名称。
以上是如何使用逗号分隔的连接字段列表连接表?的详细内容。更多信息请关注PHP中文网其他相关文章!