ホームページ >バックエンド開発 >PHPチュートリアル >単一のデータベース列に複数の値を持つレコードを効率的に検索するにはどうすればよいですか?

単一のデータベース列に複数の値を持つレコードを効率的に検索するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-28 02:51:10564ブラウズ

How Can I Efficiently Find Records with Multiple Values in a Single Database Column?

列に複数の値を持つレコードの検索

リレーショナル データベースでは、単一の列に複数の値を格納するのが一般的です。ただし、このような列を使用してデータをクエリする場合、特定の値を分離するのが困難な場合があります。カンマで区切られた複数の名前を含む「子」列を持つテーブルがあるシナリオを検討してみましょう。

問題:

次のテーブルを考えてみましょう:

id name children
1 Roberto Michael,Dia
2 Maria John,Alex
3 Mary Alexandre,Diana

目的は、アレックスという名前の子供を持つ親を見つけることです。 「WHERE Children = 'Alex'」を使用するのが理想的ですが、各セルに複数の名前があるため失敗します。 「WHERE Children LIKE '%Alex%'」を使用すると、無関係な一致がさらに返されます。

正規化スキーマ:

この問題に対処するには、次のようにテーブル スキーマを正規化できます。子ごとに 1 行を持つ子用の別個のテーブル。元のテーブルを子テーブルと結合して、特定の子を持つ親を見つけることができます。ただし、この解決策が実行不可能な場合は、代替手段があります:

FIND_IN_SET 関数:

MySQL FIND_IN_SET() 関数を使用して、特定の値があるかどうかを確認できます。はカンマ区切りのリスト内に存在します。このシナリオの場合、クエリは次のようになります。

WHERE FIND_IN_SET('Alex', children)

このクエリは、「children」列で「Alex」が見つかった行を返します。

以上が単一のデータベース列に複数の値を持つレコードを効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。