1

次の表の Feature1 と Feature2 の両方を含む車と機能 (BMW とトヨタ) を取得するにはどうすればよいですか?

Select Car,Feature 
    from Table 
    where Feature in ('Feature1','Feature2') 

は、Feature1 のみを持つ Honda を含む 3 台すべての車を示します。これは、IN 句に数百の値を含めることができる実際のクエリの単純化された例です。

Car    Feature
-----  --------
BMW    Feature1
BMW    Feature2
BMW    Feature3
Toyota Feature1
Toyota Feature2
Honda  Feature1

ありがとう、キラン

4

3 に答える 3

2
select Car
from your_table
where feature in ('f1', 'f2')
group by car
having count(distinct feature) >= 2
于 2012-07-30T14:11:46.757 に答える
2

GROUP / HAVING構造を使用して、HAVINGがIN句の要素数をテストします。このようにして、両方の機能が存在することを保証します。

SELECT cf.Car
    FROM CarFeature cf
    WHERE cf.Feature IN ('Feature1', 'Feature2')
    GROUP BY cf.Car
    HAVING COUNT(DISTINCT cf.Feature) = 2;
于 2012-07-30T14:12:16.767 に答える
0

このIN句は事実上、ネストされたORです。以下は、両方の機能を備えたすべての車を取得します。

SELECT U.Car FROM
  (
   Select Car from Table where Feature ='Feature1'
   UNION ALL
   Select Car from Table where Feature ='Feature2'
  ) AS U
WHERE COUNT(U.Car) > 1
于 2012-07-30T14:10:10.870 に答える