私は、互換性のある一意の識別名を格納する複数の列を持っています。したがって、Col1
またはCol2
のいずれかが複数のパラメータのいずれかと等しいレコードを選択したいと思います。私は、以下を試してみました。バリエーション、IE、Col1 in (?, ?)
またはCol2 in (?, ?)
です。複数の列のいずれかがパラメータ値にある行を選択します。
SELECT * FROM Table WHERE EXISTS (Col1, Col2) IN (?, ?);
は、私は現在、以下のものを使用して、これをacheiveすることができ、それは私が結合したいクエリごとに? in (Col1, Col2)
繰り返しているのでしかし、それは、長くて扱いにくいです。
SELECT * FROM Table WHERE ? in (Col1, Col2) OR ? in (Col1, Col2);
最終的には、私のクエリは、最大1000個のパラメータ(すべてのユニークになります)を有することができるので、上記のクエリを実行するために任意のより自然な方法がある場合、私は不思議でしたか?
DBが正常に正規化されている場合は、行ごとに1つの「ColX」しかありません。このテーブルを検索値と簡単に結合できます。 –
@ CLでは、これには多くの行を持つデータの外部データベース識別子が含まれていますが、多くの場合、それらは互換的に使用されています。いくつかの識別子は異なる仕様からのものであり、一部は同義語であり、一部は競合するグループからのものですが、すべて同じものを参照しています。パフォーマンス重視の作業では、すでにIDタイプを識別して別々にクエリを処理するためにいくつかの正規表現を使用していますが、パフォーマンスに問題がない場合は、怠惰な方法があるかどうか疑問に思っていました。ここでの結合は適切ではありません。 (私はこれが珍しいと理解しています)。 –
@CL、申し訳ありませんが、列がたくさんあります(そして列にはたくさんのデータがあります)。 –