使用in-if行的Mysql seletc查询具有komma分隔值

使用in-if行的Mysql seletc查询具有komma分隔值,mysql,select,comma,Mysql,Select,Comma,我用的是3分贝。用户存储在一个表中,其中用户组插入到一个逗号分隔的行usergroup=1,5,88中 现在,我尝试选择一个组,例如通过检查每个用户的数据集中是否存在一个组 如果用户的数据usergroup=9中只有一个值,那么这种方法很有效 如果用户有多个usergroup usergroup=9,11,5,3,则上述查询将不起作用 我知道这不是真正的标准化,但我没有可能改变这一点,所以我正在寻找一种方法来使用选择查询,它可以处理逗号分隔的值 有可能吗?使用 where find_in_set

我用的是3分贝。用户存储在一个表中,其中用户组插入到一个逗号分隔的行usergroup=1,5,88中

现在,我尝试选择一个组,例如通过检查每个用户的数据集中是否存在一个组

如果用户的数据usergroup=9中只有一个值,那么这种方法很有效 如果用户有多个usergroup usergroup=9,11,5,3,则上述查询将不起作用

我知道这不是真正的标准化,但我没有可能改变这一点,所以我正在寻找一种方法来使用选择查询,它可以处理逗号分隔的值

有可能吗?

使用

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

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

不幸的是,这种方法只需要搜索一个uid,所以在示例1、6和9中,您必须循环所有要搜索的组uid


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

您可以在这里找到答案:希望有帮助:
where find_in_set(usergroup, 1) > 0
   or find_in_set(usergroup, 6) > 0
   or find_in_set(usergroup, 9) > 0