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

时间:2011-07-11 14:51:11

标签: mysql sql

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

然后,对于系统中的用户,我将关联的角色ID作为列表,例如4,15。现在我需要找到'any in many',即任何可能包含resource.role_ids列中任何角色ID的资源。

这个问题与this one类似,但预计Grails中不会出现预期的解决方案。

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

1 个答案:

答案 0 :(得分:1)

使用像this one之类的功能将您的列表转换为单独的记录,然后正常加入所有内容。