0

このSELECTステートメントは問題なく機能していますが、検索をさらに絞り込むために繰り返したいと思います。

SELECT id1 
FROM table1 
WHERE id2 IN (SELECT id 
              FROM table2 
              WHERE name="country" 
                AND value="Mexico")

たとえば、メキシコで「ビーチ」がある場所のみを検索したい場合は、次のようになります。

name="features" AND value="Beaches"

...どうすれば、私のSELECTステートメントで結果をさらに絞り込むことができますか?

4

2 に答える 2

1

おそらく最善の方法は、新しいクエリを実行し、追加のフィルタリングを追加することです。クライアント アプリケーションで「手動で」フィルタリングすることは可能ですが、ほとんどの場合、効率が低下する可能性があります。したがって、より多くの制限を加えて新しいクエリを実行します。

SELECT id1 FROM table1 WHERE id2 IN 
        (SELECT id FROM table2 WHERE 
               name="country" AND 
               value="Mexico" AND
               name2 = "features" AND 
               value2 = "Beaches" )

2 つの新しい列名を別のものに変更したことに注意してください (元の名前では、元のクエリ結果には他の値が含まれていません)。「絞り込み」によって追加する場合、おそらくクエリは次のようになります。

SELECT id1 FROM table1 WHERE id2 IN 
        (SELECT id FROM table2 WHERE 
               ( name="country" AND 
               value="Mexico" ) OR
               ( name = "features" AND 
               value = "Beaches" ))
于 2012-07-27T17:06:54.070 に答える
0

Vecta、追加の IN を追加してクエリを拡張する必要があります。

SELECT id1 
FROM table1 
WHERE id2 IN (SELECT id 
          FROM table2 
          WHERE name="country" 
            AND value="Mexico")
AND id2 IN (SELECT id 
          FROM table2 
          WHERE name="featues" 
            AND value="Beach")

ただし、これによりパフォーマンスが急速に低下することを考慮してください。:-)

于 2012-07-27T17:22:28.177 に答える