2 つの条件が該当するかどうかを確認する必要がある ID を持つテーブルがあります。各条件は、where 句のセットです。
たとえば、チェックする必要があるのは Table1 です。
1 番目の条件:
select t1.id
from table1 t1, table2 t2, table3 t3
where
condition1,
condition2,
condition3
2 番目の条件:
select t1.id
from table1 t1, table2 t2, table4 t4
where
condition1,
condition4,
condition5
ここで、1 番目の条件または 2 番目の条件が同じ ID またはその両方に適用されるかどうかを確認する必要があります。ユニオンを使用し、各条件の select ステートメントに静的な値を追加するように言われました (例: 1 番目の条件select t1.id, 1
と 2 番目の条件の場合select t1.id, 2
)。
テーブルは非常に大きく、何百万ものレコードが含まれているため、パフォーマンスを向上させるために 1 つの SQL でこれを行う必要があります。また、C コードから結果にアクセスしていますが、返される結果の数がわからないため、各クエリを単独で実行し、結果をそれぞれの配列に保存し、各配列でループを実行して、両方または 1 つの条件が適用される ID を確認します。これは、ID ごとに異なる処理が適用される条件に基づいて実行されるためです。 .
編集 例:
t1 ids: 1, 2, 3, 4
for id = 1, only condition 1 apply
for id = 2, only condition 2 apply
for id = 3, both conditions apply
for id = 4, no condition apply
結果には、1 つまたは 2 つのランダムな静的フラグを含む次のものが必要です。
id 1 2
-----------------
1 1
2 2
3 1 2
私はそれが厄介に聞こえることを知っています、それが可能かどうかさえ確信が持てません
どうもありがとう :)