如果行包含逗号分隔值,则使用mysql select query

时间:2014-10-26 11:09:30

标签: mysql select comma

我正在使用typo3 db。用户存储在一个表中,usergroups插入到以逗号分隔的行(usergroup = 1,5,88)中。

现在,我尝试通过检查每个用户dataset中是否存在某个群组来尝试选择群组。

  select from ...... where ... usergroup IN (1,6,9) ...

如果用户数据中只有一个值(usergroup=9),这种情况很有效 如果用户有多个usergroupusergroup=9,11,5,3),则上述查询无法正常工作。

我知道这并没有真正规范化,我无法改变这一点,因此我正在寻找一种方法来使用可以处理逗号分隔值的选择查询。

有可能吗?

2 个答案:

答案 0 :(得分:0)

使用

where find_in_set(usergroup, 1) > 0
   or find_in_set(usergroup, 6) > 0
   or find_in_set(usergroup, 9) > 0

答案 1 :(得分:0)

TYPO3实际上有一个api方法,用于查看关系存储为逗号分隔值的字段。如果TYPO6 6.0+你可以在这里找到这个方法\ TYPO3 \ CMS \ Core \ Database \ DatabaseConnection-> listQuery。

遗憾的是,这种方法只需要一个uid进行搜索,因此您必须遍历要搜索的所有组uid(在您的示例中为1,6和9)。

对于较新的TYPO3版本,此方法实际上只是sql函数FIND_IN_SET的包装器。较旧的版本使用了另一种基于LIKE的方法。