在MySQL ListOfValues中查询匹配项

在MySQL ListOfValues中查询匹配项,mysql,matching,Mysql,Matching,当我希望查询返回值列表中至少一个值与值列表中至少一个值匹配的所有行时,查询MySql的最佳方法是什么 范例 如果我的表格包含以下行: name groups item1 gr1, gr2 item2 gr1,gr2,gr3 item3 gr1,gr3 我有一个值列表:“gr3,gr4,gr5” 我想查找表中在其“组”字段中至少有一个值gr3、gr4或gr5的所有行 因此,本例中的查询应该返回item2和item3 如何构造一个高效的查询

当我希望查询返回值列表中至少一个值与值列表中至少一个值匹配的所有行时,查询MySql的最佳方法是什么

范例

如果我的表格包含以下行:

name         groups
item1        gr1, gr2
item2        gr1,gr2,gr3
item3        gr1,gr3
我有一个值列表:“gr3,gr4,gr5”

我想查找表中在其“组”字段中至少有一个值gr3、gr4或gr5的所有行

因此,本例中的查询应该返回item2和item3


如何构造一个高效的查询而不在脚本中循环?

我个人认为这不是构造数据库的最佳方法。我会有一个链接表,类似于item_groups,它会为每个item group链接保存一行,因此您将有:

item_name         group_name
item1        gr1
item1        gr2
item2        gr1
item2        gr2
item2        gr3
item3        gr1
item3        gr3
这样你就可以简单地做到

SELECT item_name FROM item_groups WHERE group_name IN ('gr3','gr4','gr5');
这就是我在BSc中学习数据库理论时所学到的,虽然它确实会产生更多的表,但它使搜索更快、更容易。 嗯