1

以下のテーブルのクエリでWHERE句を調整するのに助けが必要です。

Key   |   Name   |   Role   |   Location
111   |   Bob    | Manager  |  All Locations
222   |   Jim    | Manager  |  All Locations
333   |   Tim    | Sales    |  Washington
444   |   Roy    | Sales    |  New York
555   |   Lee    | Sales    |  All Locations
666   |   Gus    | Sales    |  All Locations
777   |   Joe    | Admin    |  All Locations
888   |   Jen    | Admin    |  New York

すべての「すべての場所」レコードを除外する必要がありますが、役割がマネージャーである「すべての場所」レコードは保持します。目的の結果を得るには:

Key   |   Name   |   Role   |   Location
111   |   Bob    | Manager  |  All Locations
222   |   Jim    | Manager  |  All Locations
333   |   Tim    | Sales    |  Washington
444   |   Roy    | Sales    |  New York
888   |   Jen    | Admin    |  New York

以下のクエリでは、Managerのレコードを含むすべての場所のレコードが除外されると思います。

SELECT * FROM Table
WHERE (Location <> 'All Locations' AND Role <> 'Manager')
4

4 に答える 4

4

:を展開する必要がありWHEREます

select *
from yourtable
where
(
  role = 'Manager'
  and location = 'All Locations'
)
or
(
  location <> 'All Locations'
)

SQL FiddlewithDemoを参照してください

結果を返します:

| KEY | NAME |    ROLE |      LOCATION |
----------------------------------------
| 111 |  Bob | Manager | All Locations |
| 222 |  Jim | Manager | All Locations |
| 333 |  Tim |   Sales |    Washington |
| 444 |  Roy |   Sales |      New York |
| 888 |  Jen |   Admin |      New York |
于 2013-01-15T15:53:36.787 に答える
1
SELECT * FROM Table
WHERE (Location != 'All Locations' OR (Location = 'All Locations' AND Role = 'Manager')
于 2013-01-15T15:53:07.557 に答える
1

「すべての「すべての場所」レコードを除外しますが、役割がマネージャーである「すべての場所」レコードは保持します」と言います。それは、役割がマネージャーではないすべての場所のレコードを除外することを意味しませんか?つまり、レコード111と222を含めたくないですか??

ド・モルガンの法則から、NotAとNotBはNot(AまたはB)と同等です

あなたの場合、一方の述語は正でもう一方は負なので、DeMorganは次のように読みます。

  Not (A And not B) <=> (Not A or B), i.e., 

つまり、すべてではない場所またはマネージャーのいずれかであるすべてのレコードを含めることを意味します。

もしそうなら、あなたが必要とするものは次のとおりです。

  ... Where Location != 'All Locations' Or Role = 'Manager'
于 2013-01-15T16:01:06.320 に答える
0

ANDの代わりにORを使用する必要があります

SELECT * FROM Table
WHERE (Location <> 'All Locations' OR Role = 'Manager')
于 2013-01-15T15:52:50.463 に答える