首页 > 解决方案 > MySQL 从管道分隔字符串中搜索

问题描述

在 MYSql 5.7 中(我不能使用 PHP 或类似语言或其他 MySQL 版本)我有两个表:

操作员操作员工作

在第一个表中,我有 ID 和名称

在第二个表中,我有一个带有管道分隔 ID 的字符串

在这里您可以找到用于测试的 DB Fiddle: https ://www.db-fiddle.com/f/iTYVLJQgaNEs92rMQKgybP/1

实际上我需要使用IDOperators列并与name列匹配

预期结果是逗号分隔的值,以这种方式:

1 - 名称 1、名称 2、名称 3

2 - 名称 2,名称 3

3 - 名称 1、名称 3

原来的IDOperators是:

1 - 1|2|3

2 - 2|3

3 - 1|3

非常感谢

标签: mysql

解决方案


以这种方式解决

SELECT  b.id,
        GROUP_CONCAT(a.name ORDER BY a.id) Result
FROM    Operators a
        INNER JOIN OperatorsWork b
            ON FIND_IN_SET(a.id, REPLACE(b.IDOperators, '|', ',')) > 0
GROUP BY b.id

推荐阅读