結果が得られるまで複数の SELECT を試行する方法
テーブル内の特定の行の検索には、さまざまなレベルの複数の条件が含まれる場合があります。精度。一般的なアプローチは、一致が見つかるまで精度を上げながら複数の SELECT ステートメントを使用することです。
SELECT * FROM image WHERE name LIKE 'text' AND group_id = 10 LIMIT 1
SELECT * FROM image WHERE name LIKE 'text' LIMIT 1
SELECT * FROM image WHERE group_id = 10 LIMIT 1
単一式ソリューションはありますか?
すべての SELECT ステートメントを含む単一の式を記述することはできませんが、UNION ALL 演算子を使用して複数の式を組み合わせることができます。 SELECT ステートメントを 1 つのクエリにまとめます:
SELECT * FROM image WHERE name = 'name105' AND group_id = 10 UNION ALL SELECT * FROM image WHERE name = 'name105' UNION ALL SELECT * FROM image WHERE group_id = 10 LIMIT 1;
このクエリは、高速実行のためのインデックスを考慮して、指定された条件のいずれかに一致する最初の行を効率的に取得します。
複数の検索パラメータの処理
複数の検索パラメータがある場合、パラメータの組み合わせごとに追加の SELECT ステートメントを追加することで UNION ALL アプローチを拡張できます。たとえば、特定の名前またはグループ ID を持つ画像を検索する場合:
SELECT * FROM image WHERE name = 'name105' AND author = 'author10' UNION ALL SELECT * FROM image WHERE name = 'name105' UNION ALL SELECT * FROM image WHERE author = 'author10' LIMIT 1;
関連性に関する考慮事項
このアプローチは複数の検索条件を効果的に組み合わせますが、関連性を考慮しない。関連性が重要な場合は、UNION ALL を適用する前に、SELECT ステートメントでの追加の並べ替えまたはフィルター処理が必要になる場合があります。
以上が複数の SELECT ステートメントを効率的に組み合わせて一致する行を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。