複数の列の値に基づくレコードの取得
単一のデータベース列に複数の値が含まれるシナリオでは、それらの値に基づいてレコードを取得するクエリを実行します。価値観は難しい場合があります。これは、Alex という名前の子供を持つ親を見つける必要があることによって例証されます。
「WHERE Children = 'Alex'」を使用する従来のアプローチは、Children 列内に複数の名前が存在するため実現できません。 「WHERE Children LIKE '%Alex%'」などの代替案では、Alex で始まる名前 (例: Alexandre) を含む、より広範な結果が返されます。単一の値を正確に一致させるには、スキーマの正規化をお勧めします。
正規化には、子ごとに個別の行を持つ個別のテーブルを作成することが含まれます。このテーブルを親テーブルと結合することにより、特定の子を持つ親を識別できるようになります。
正規化がオプションではないシナリオの場合、別の手法として FIND_IN_SET 関数を使用します。
WHERE FIND_IN_SET('Alex', children)
この関数は、子列内の特定の部分文字列 (この場合は「Alex」) を検索し、見つかった場合は数値インデックスを返します。一致するレコードには 0 より大きいインデックスが付けられ、効果的なフィルタリングが容易になります。
以上が単一のデータベース列の複数の値に基づいてレコードを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。