mysql - 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
非常感谢
解决方案
以这种方式解决
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
推荐阅读
- r - 不需要将`!!!`操作符导入包DESCRIPTION?
- javascript - 为什么当我执行 hasAttribute() 并且元素具有属性时,它返回 false?
- postgresql - 有什么方法可以在 sequalize PostgreSQL 中编辑自动增量值
- android - SwipeRefresherLayout 空指针
- java - 检查两个图像是否几乎相同(通过检查精灵)?
- android - 两个textview一个接一个不使用LinearLayout权重
- php - Docker - ENTRYPOINT 脚本导致重新启动
- java - JAVA_HOME 未出现且 MAVEN_HOME 设置不正确
- regex - 匹配正则表达式中的短语,不包括关键字
- sql - 计算上个月余额的当前总额