lesson 26 Joins & sets · advanced
Combine sets with UNION
Combine query results with or without duplicates.
the idea
UNION stacks compatible query outputs and removes duplicate rows. UNION ALL retains duplicates. Both sides need the same number of columns in matching positions.
tables in this lesson
The challenges use this data. Each column shows its type underneath; → marks a link to another table.
customers4 columns · 8 rows
| idinteger · key | nametext | citytext | joined_attext |
|---|---|---|---|
| 1 | Alice | Chicago | 2024-01-10 |
| 2 | Ben | Austin | 2024-02-12 |
| 3 | Cara | Seattle | 2024-03-05 |
| 4 | Dev | Chicago | 2024-04-20 |
| 5 | Elena | NULL | 2024-05-01 |
showing 5 of 8 rows
products4 columns · 6 rows
| idinteger · key | nametext | categorytext | pricereal |
|---|---|---|---|
| 1 | Notebook | Stationery | 12 |
| 2 | Desk lamp | Home | 45 |
| 3 | Keyboard | Tech | 80 |
| 4 | Pen set | Stationery | 8 |
| 5 | Headphones | Tech | 120 |
showing 5 of 6 rows
example
The idea in one query. Press Run to see what it returns; running examples never affects your progress.
SELECT city FROM customers WHERE city='Chicago' UNION SELECT city FROM customers WHERE city='Austin';
Watch for: UNION combines rows vertically; JOIN combines columns horizontally.
build it step by step
Each step changes one thing. Run them in order and watch the result change.
Build two compatible city lists. Chicago and Austin rows each produce a city column. UNION stacks compatible selects and drops duplicates.
step-1.sqlSELECT city FROM customers WHERE city IN ('Chicago', 'Austin') ORDER BY city;Stack sets with UNION. UNION removes duplicates across the stacked rows. UNION ALL would keep every duplicate.
step-2.sqlSELECT city FROM customers WHERE city = 'Chicago' UNION SELECT city FROM customers WHERE city = 'Austin';