5

私は、3つの基準のうち少なくとも2つを満たす人々を見つけるwhere句を書き込もうとしています。これは例です

   SELECT *
   FROM Personal
   WHERE
   [State] = 'Tx' or [City] = 'Austin' or [Gender] = 'Male'

したがって、テキサスとオースティンに住んでいる人、またはテキサスに住んでいて男性である人などを返す必要がありますが、テキサスに住んでいるだけの人ではなく、少なくとも2つの基準を満たす必要があります。

私の実際のクエリには、より多くの基準を含めることができ、2つ以上または正確に2つなどを含めることもできます。

前もって感謝します

4

2 に答える 2

6

一連の case ... then 1 else 0 end ステートメントで一致を追加し、最終結果を必要な一致の数と比較できます。

   SELECT *
   FROM Personal
   WHERE
     case when [State] = 'Tx' then 1 else 0 end
     + case when [City] = 'Austin' then 1 else 0 end
     + case when [Gender] = 'Male' then 1 else 0 end
     >= 2

別の方法として、union all のリストに分割することもできます。

SELECT *
FROM   personal
       INNER JOIN (SELECT id
                   FROM   (SELECT id
                           FROM   personal
                           WHERE  state = 'Tx'
                           UNION ALL
                           SELECT id
                           FROM   personal
                           WHERE  city = 'Austin'
                           UNION ALL
                           SELECT id
                           FROM   personal
                           WHERE  gender = 'Male') a
                   GROUP  BY id
                   HAVING COUNT (*) >= 2) a
         ON personal.id = a.id 
于 2012-04-09T21:10:27.990 に答える
2
 SELECT *
   FROM Personal
   WHERE
   ([State] = 'Tx' AND [City] = 'Austin') or ([State] = 'Tx' AND [Gender] = 'Male')
于 2012-04-09T21:08:09.390 に答える