mysql - 如何在包含 INT 作为逗号分隔值的列中查找包含任何给定 INT 的行列表

标签 mysql sql

我有一个案例,我们正在维护一个包含资源的表。该表有一个 varchar 列,其中包含作为逗号分隔值的角色 ID(我知道规范化应该是可行的方法,但无法更改长时间运行的工作系统)。例如。 role_ids 列包含“1,4,6,9,10”,另一行包含“5,10,15”。

然后,对于系统中的用户,我将关联的角色 ID 作为列表,例如4,15。现在我需要找到“多中任意”,即可能具有resource.role_ids 列中存在的任何角色ID 的任何资源。

这个问题类似于this one ,但是 Grails 中没有预期的解决方案。

我正在寻找 MySQL 解决方案 - 查询或存储过程。虽然可以使用“FIND_IN_SET()”找到一组资源,但不想使用每个用户的 role_id 列表对数据库执行多次调用。

最佳答案

使用类似 this one 的函数,将您的列表变成单独的记录,然后正常连接所有内容。

关于mysql - 如何在包含 INT 作为逗号分隔值的列中查找包含任何给定 INT 的行列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6652018/

相关文章:

sql - 关于SQL中的索引和主键?

php - sql查询不适用于order by

mySQL 导入在 DECIMAL 上失败

java - 使用 Spring 的 JDBC 支持获取输出参数

PHP:如何使用较少的查询

mysql - 我可以将多个 MySQL 行连接到一个字段中吗?

php - php无法连接数据库?

mysql - 在 AWS 中使用 liquibase 更新 MySQL 5.6.40 DD

sql - 试图让我的注意力集中在糟糕的 SQL 查询上

php - Typo3 V6 : How to create a content element container?(不带电视)