SQL Basics

Membership Logic: IN vs. EXISTS

Senior Data Analyst
January 10, 2026
5 min read

The Shopping List

The CEO sent over a list of regions. *"I want to see performance for Canada, Mexico, Brazil, and Argentina. Just those four."*

In my early days, I would have written:

`WHERE region = 'Canada' OR region = 'Mexico' OR region = 'Brazil' ...`

It worked, but it was ugly. What if he sent a list of 50 countries? My query would be three pages long.

The Quest: The Membership Operator

Professional SQL uses the `IN` operator for lists. It’s cleaner, faster to read, and much harder to mess up than a series of `OR` clauses.

The Implementation: The "Club" Filter

`IN` allows you to define a set of values in parentheses. If the column matches *any* value in that set, the row passes.

-- Filtering for specific regions efficiently

SELECT *

FROM customers

WHERE country IN ('Canada', 'Mexico', 'Brazil', 'Argentina');

The Power of NOT

You can also do the opposite!

`WHERE country NOT IN ('USA', 'UK')`

(Give me everyone *except* people in these two countries).

The "Oops" Moment

I once had a `NULL` value in my `IN` list within a subquery. It caused the entire query to return zero results.

**Pro Tip**: `IN` doesn't like `NULL`. If your list has a NULL, SQL gets confused. We’ll learn more about the "Null Trap" in a few days, but for now, keep your lists clean of empty values.

The Victory

My query was one line instead of ten. It was easy for someone else to review, and easy for me to add or remove countries as the CEO changed his mind. I had learned to respect the "Beauty" of clean logic.

Your Task for Today

Filter a table for 3 different categories using the `IN` operator. Then, try the same thing using `NOT IN`.

*Day 11: Range Finder—The BETWEEN Operator.*

Ready to put your knowledge into practice?

Join SQL Mastery and learn through interactive exercises.