请告诉我查询MySQL中,最好的办法时,我想查询返回的所有行中值的匹配列表至少一个值中值的列表的至少一个值?

例如

如果我的表包含下列行:

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

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

我要找到所有在我的表有值的至少一个GR3,在其领域的组GR4和GR5行。

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

我怎样才能构建没有我的脚本循环高效的查询?

有帮助吗?

解决方案

我个人认为这不是构建数据库的最佳方式。我想有一个链接表,像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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top