I have the following table called `Attributes`

```
* AttId  * CustomerId  * Class * Code *
| 1      | 1           | 1     | AA   |
| 2      | 1           | 1     | AB   |
| 3      | 1           | 1     | AC   |
| 4      | 1           | 2     | AA   |
| 5      | 1           | 2     | AB   |
| 6      | 1           | 3     | AB   |
| 7      | 2           | 1     | AA   |
| 8      | 2           | 1     | AC   |
| 9      | 2           | 2     | AA   |
| 10     | 3           | 1     | AB   |
| 11     | 3           | 3     | AB   |
| 12     | 4           | 1     | AA   |
| 13     | 4           | 2     | AA   |
| 14     | 4           | 2     | AB   |
| 15     | 4           | 3     | AB   |

```

Where each `Class`, `Code` pairing represents a specific `Attribute`. 

I'm trying to write a query that returns all `customers` that are **NOT** linked to the `Attribute` pairing `Class = 1, Code = AB`.

This would return `Customer Id` values 2 and 4.

I started to write `Select Distinct A.CustomerId From Attributes A Where (A.Class = 1 and A.Code = 'AB')` but stopped when I realised I was writing a `SQL` query and there is not an operator available to place before the parentheses to indicate the clause within must **Not** be met.

What am I missing? Or which operator should I be looking at? 

**Edit:**

I'm trying to write a query that only returns those `Customers` (ie distinct Customer Id's) that have **NO** link to the `Attribute` pairing `Class = 1, Code = AB`.

This could only be `Customer Id` values 2 and 4 as the table does **Not** contain the rows:

```
* AttId  * CustomerId  * Class * Code *
| x      | 2           | 1     | AB   |
| x      | 4           | 1     | AB   |

```

Changed Title from:

**How to write "Where Not(a=x and b=x)"in Sql Query**

To:

**How to write a Sql query to find distinct values that have never met the following "Where Not(a=x and b=x)"**

As the previous title was a question in it's own right however the detail of the question added an extra dimension which led to confusion.