0

値のリストの少なくとも 1 つの値が値のリストの少なくとも 1 つの値と一致するすべての行をクエリで返す場合、MySql をクエリする最良の方法は何ですか?

テーブルに次の行が含まれている場合:

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

そして、値のリストがあります:「gr3、gr4、gr5」

グループ フィールドに gr3、gr4、または gr5 の値の少なくとも 1 つがあるテーブル内のすべての行を検索したいと考えています。

したがって、この場合のクエリは item2 と item3 を返す必要があります

スクリプトをループせずに効率的なクエリを作成するにはどうすればよいですか?

4

1 に答える 1

2

個人的には、これがデータベースを構造化するための最良の方法ではないことをお勧めします。アイテムグループリンクごとに1つの行を保持する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

于 2009-10-15T10:41:46.440 に答える