The SQL "IN" condition helps reduce the need to use multiple SQL "OR" conditions. The SQL "IN" condition can be used in any valid SQL statement - SQL SELECT statement, SQL INSERT statement, SQL UPDATE statement, or SQL DELETE statement.
The syntax for the "IN" condition is:
expression in (value1, value2, .... value_n);
The SQL "IN" condition will return the records where expression is value1, value2..., or value_n.
SQL "IN" Condition - Character example
The following is an SQL SELECT statement that uses the IN condition to compare character values:
SELECT * FROM suppliers WHERE supplier_name in ('IBM', 'Hewlett Packard', 'Microsoft');
This SQL "IN" condition example would return all rows where the supplier_name is either IBM, Hewlett Packard, or Microsoft. Because the * is used in the select, all fields from the suppliers table would appear in the result set.
It is equivalent to the following statement:
SELECT * FROM suppliers WHERE supplier_name = 'IBM' OR supplier_name = 'Hewlett Packard' OR supplier_name = 'Microsoft';
As you can see, using the SQL "IN" condition makes the statement easier to read and more efficient.
SQL "IN" Condition - Numeric example
You can also use the SQL "IN" condition with numeric values.
For example:
SELECT * FROM orders WHERE order_id in (10000, 10001, 10003, 10005);
This SQL "IN" condition example would return all orders where the order_id is either 10000, 10001, 10003, or 10005.
It is equivalent to the following statement:
SELECT * FROM orders WHERE order_id = 10000 OR order_id = 10001 OR order_id = 10003 OR order_id = 10005;
SQL "IN" Condition - Using the NOT operator
The SQL "IN" condition can also be combined with the SQL NOT operator.
For example,
SELECT * FROM suppliers WHERE supplier_name not in ( 'IBM', 'Hewlett Packard', 'Microsoft');
This SQL example would return all rows where the supplier_name is neither IBM, Hewlett Packard, or Microsoft. Sometimes, it is more efficient to list the values that you do not want, as opposed to the values that you do want.