Beginner · 12 min
Combining conditions
Combine filters with AND, OR, NOT, and parentheses.
Sample database
CREATE TABLE groups (id INTEGER PRIMARY KEY, label TEXT NOT NULL);
CREATE TABLE members (id INTEGER PRIMARY KEY, name TEXT NOT NULL, city TEXT, group_id INTEGER REFERENCES groups(id));
CREATE TABLE sessions (id INTEGER PRIMARY KEY, member_id INTEGER NOT NULL REFERENCES members(id), topic TEXT NOT NULL, minutes INTEGER NOT NULL CHECK(minutes > 0), completed INTEGER NOT NULL CHECK(completed IN (0, 1)), day TEXT NOT NULL);
INSERT INTO groups VALUES (1, 'Morning'), (2, 'Evening');
INSERT INTO members VALUES (1, 'Ada', 'Oslo', 1), (2, 'Bo', 'Rome', 1), (3, 'Cy', NULL, 2), (4, 'Dee', 'Oslo', 2);
INSERT INTO sessions VALUES
(1, 1, 'Travel', 20, 1, '2026-01-01'),
(2, 1, 'Food', 10, 0, '2026-01-02'),
(3, 2, 'Travel', 30, 1, '2026-01-01'),
(4, 2, 'Music', 15, 1, '2026-01-03'),
(5, 3, 'Music', 25, 0, '2026-01-02'),
(6, 3, 'Travel', 15, 1, '2026-01-04');Require both conditions
AND requires both conditions to be true. Use it to combine independent requirements, such as a completed session and a minimum duration. The completed flag in this SQLite dataset uses 1 and 0.
SELECT id FROM sessions WHERE completed = 1 AND minutes >= 20 ORDER BY id;Output
id 1 3
Group alternatives
AND binds more tightly than OR. Parentheses make the intended grouping visible and prevent an alternative from bypassing a shared condition. NOT negates a condition; NULL still requires special handling.
SELECT id FROM sessions WHERE (topic = 'Travel' OR topic = 'Music') AND NOT completed = 0 ORDER BY id;Output
id 1 3 4 6
Put it into practice
- Read the sample tables and predict the result before running the query.
- Solve the task, compare the returned rows, and explain why the solution works.
Try it yourself
Code runs on this device. When you are signed in, drafts sync to your account.
Run queries on a fresh sample database. Table changes last for this run only; your query draft is saved separately. Results show column names followed by rows. NULL means a missing value.
Apply what you learned
Return IDs for completed sessions that last at least 20 minutes, ordered by ID.
Both requirements must hold for every returned row.
Show solution
SELECT id FROM sessions WHERE completed = 1 AND minutes >= 20 ORDER BY id;AND excludes short completed sessions and long unfinished sessions.