SQLIN Operator
The SQL IN Operator
TheIN operator allows you to specify multiple values in aWHERE clause.
TheIN operator is a shorthand for multipleOR conditions.
Example
Return all customers from 'Germany', 'France', or 'UK'
WHERE Country IN ('Germany', 'France', 'UK');
Syntax
SELECTcolumn_name(s)
FROMtable_name
WHEREcolumn_name IN (value1, value2, ...);
Demo Database
Below is a selection from theCustomers table used in the examples:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
NOT IN
By using theNOT keyword in front of theIN operator,you return all records that are NOT any of the values in the list.
Example
Return all customers that are NOT from 'Germany', 'France', or 'UK':
WHERE Country NOT IN ('Germany', 'France', 'UK');
IN (SELECT)
You can also useIN with a subquery in theWHERE clause.
With a subquery you can return all records from the main querythat are present in the result of the subquery.
Example
Return all customers that have an order in theOrders table:
WHERE CustomerID IN (SELECT CustomerID FROM Orders);
NOT IN (SELECT)
The result in the example above returned 74 records,that means that there are 17 customers that haven't placed any orders.
Let us check if that is correct, by using theNOT IN operator.
Example
Return all customers that have NOT placed any orders in theOrders table:
WHERE CustomerID NOT IN (SELECT CustomerID FROM Orders);

