2009-10-15 86 views
0

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

例如

如果我的表包含以下行:

name   groups 
item1  gr1, gr2 
item2  gr1,gr2,gr3 
item3  gr1,gr3 

而且我有值的列表: “GR3,GR4,GR5”

我想找到的所有行在我的表格中,它的组字段中至少有gr3,gr4或gr5中的一个值。

因此,在这种情况下,查询应该返回ITEM2和项目3

我如何构建一个高效的查询,而在我的脚本循环?

回答

2

我个人建议这不是构建数据库的最佳方式。我想有一个链接表,像item_groups将举行一列的每个项目组联系,所以你有什么会有:

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'); 

当我将数据库理论作为我的学士学位的一部分加以应用时,这就是我所教的内容,虽然它确实产生了更多的表格,但它使搜索更快捷,更容易。 HTH