It returns rows from the first query that are not present in the second query.
Click to reveal answer
beginner
Does MySQL support the EXCEPT operator directly?
No, MySQL does not support EXCEPT directly. You can use LEFT JOIN or NOT EXISTS to get the same result.
Click to reveal answer
intermediate
How can you simulate EXCEPT in MySQL using LEFT JOIN?
Select rows from the first table and LEFT JOIN the second table on matching columns, then filter where the second table's columns are NULL.
Click to reveal answer
intermediate
Write a simple NOT EXISTS query to simulate EXCEPT in MySQL.
SELECT * FROM table1 t1 WHERE NOT EXISTS (SELECT 1 FROM table2 t2 WHERE t2.col = t1.col);
Click to reveal answer
advanced
Why might you choose NOT EXISTS over LEFT JOIN to simulate EXCEPT?
NOT EXISTS can be more readable and sometimes more efficient, especially when dealing with NULL values or complex conditions.
Click to reveal answer
Which SQL operator returns rows from the first query that are not in the second?
AEXCEPT
BINTERSECT
CUNION
DJOIN
✗ Incorrect
EXCEPT returns rows from the first query that do not appear in the second.
Does MySQL support the EXCEPT operator natively?
AYes, fully supported
BNo, it does not support EXCEPT
COnly in MySQL 8.0+
DOnly with a plugin
✗ Incorrect
MySQL does not support EXCEPT natively; alternatives like LEFT JOIN or NOT EXISTS are used.
Which SQL clause can simulate EXCEPT by filtering unmatched rows?
AGROUP BY
BINNER JOIN
CLEFT JOIN with IS NULL check
DORDER BY
✗ Incorrect
LEFT JOIN combined with IS NULL filters rows not matched in the second table, simulating EXCEPT.
What does NOT EXISTS do in a query?
AChecks if a subquery returns no rows
BChecks if a subquery returns any rows
CJoins two tables
DDeletes rows
✗ Incorrect
NOT EXISTS returns true if the subquery returns no rows, useful to exclude matches.
Which method can handle NULL values better when simulating EXCEPT?
AUNION
BLEFT JOIN with IS NULL
CINNER JOIN
DNOT EXISTS
✗ Incorrect
NOT EXISTS handles NULL values more reliably than LEFT JOIN with IS NULL in some cases.
Explain how to simulate the EXCEPT operator in MySQL using LEFT JOIN.
Think about joining and then filtering unmatched rows.
You got /3 concepts.
Describe the difference between using NOT EXISTS and LEFT JOIN to simulate EXCEPT in MySQL.
Consider readability and how NULL values affect results.
You got /3 concepts.
Practice
(1/5)
1. What does the SQL EXCEPT operation do?
easy
A. Returns rows from the first query that are not in the second query
B. Returns rows common to both queries
C. Returns all rows from both queries combined
D. Deletes rows from the first table
Solution
Step 1: Understand the purpose of EXCEPT
The EXCEPT operation returns rows that appear in the first query but do not appear in the second query.
Step 2: Compare with other set operations
Unlike INTERSECT which returns common rows, EXCEPT excludes rows found in the second set.
Final Answer:
Returns rows from the first query that are not in the second query -> Option A
Quick Check:
EXCEPT = unique rows in first set [OK]
Hint: EXCEPT means "first minus second" rows [OK]
Common Mistakes:
Confusing EXCEPT with INTERSECT
Thinking EXCEPT returns all rows combined
Assuming EXCEPT deletes data
2. Which of the following is the correct MySQL syntax to simulate EXCEPT using NOT EXISTS?
easy
A. SELECT * FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table2.id = table1.id);
B. SELECT * FROM table1 EXCEPT SELECT * FROM table2;
C. SELECT * FROM table1 JOIN table2 ON table1.id = table2.id WHERE table2.id IS NULL;
D. SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);
Solution
Step 1: Identify how NOT EXISTS works
NOT EXISTS checks if a row in table1 has no matching row in table2 based on the condition.
Step 2: Match syntax to EXCEPT behavior
The query selects rows from table1 where no matching id exists in table2, simulating EXCEPT.
Final Answer:
SELECT * FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table2.id = table1.id); -> Option A
Quick Check:
NOT EXISTS filters out matching rows [OK]
Hint: Use NOT EXISTS with matching condition for EXCEPT [OK]
Common Mistakes:
Using EXCEPT directly in MySQL (unsupported)
Confusing JOIN with NOT EXISTS logic
Using IN instead of NOT EXISTS
3. Given tables: table1(id): 1, 2, 3, 4 table2(id): 3, 4, 5 What is the result of this query?
SELECT id FROM table1 WHERE NOT EXISTS (SELECT 1 FROM table2 WHERE table2.id = table1.id);
medium
A. [3, 4]
B. [1, 2]
C. [5]
D. [1, 2, 3, 4, 5]
Solution
Step 1: Identify ids in table1 not in table2
table1 has 1,2,3,4; table2 has 3,4,5. IDs 1 and 2 are missing in table2.
Step 2: Understand NOT EXISTS filtering
The query returns ids from table1 where no matching id exists in table2, so 1 and 2 are returned.
Final Answer:
[1, 2] -> Option B
Quick Check:
table1 minus table2 = [1, 2] [OK]
Hint: Find ids in first table missing in second [OK]
Common Mistakes:
Including ids present in both tables
Confusing NOT EXISTS with EXISTS
Returning ids from table2 instead
4. Identify the error in this MySQL query intended to simulate EXCEPT:
SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id WHERE table2.id = NULL;
medium
A. LEFT JOIN should be INNER JOIN
B. Missing ON condition in JOIN
C. Using '=' to compare with NULL instead of IS NULL
D. No error, query is correct
Solution
Step 1: Understand NULL comparison in SQL
In SQL, NULL cannot be compared using '='; use IS NULL instead.
Step 2: Identify the mistake in WHERE clause
The condition table2.id = NULL is always false; it should be table2.id IS NULL to find unmatched rows.
Final Answer:
Using '=' to compare with NULL instead of IS NULL -> Option C
Quick Check:
NULL comparison requires IS NULL [OK]
Hint: Use IS NULL, not = NULL, to check for NULL values [OK]
Common Mistakes:
Using '=' instead of IS NULL
Confusing JOIN types
Omitting ON clause in JOIN
5. You want to find customers who placed orders last month but did NOT place orders this month. Which query correctly simulates EXCEPT in MySQL?
hard
A. SELECT customer_id FROM orders LEFT JOIN orders o2 ON orders.customer_id = o2.customer_id WHERE o2.order_date BETWEEN '2024-06-01' AND '2024-06-30';
B. SELECT customer_id FROM orders WHERE order_date BETWEEN '2024-06-01' AND '2024-06-30' EXCEPT SELECT customer_id FROM orders WHERE order_date BETWEEN '2024-05-01' AND '2024-05-31';
C. SELECT customer_id FROM orders WHERE order_date BETWEEN '2024-05-01' AND '2024-06-30';
D. SELECT customer_id FROM orders WHERE order_date BETWEEN '2024-05-01' AND '2024-05-31' AND NOT EXISTS (SELECT 1 FROM orders o2 WHERE o2.customer_id = orders.customer_id AND o2.order_date BETWEEN '2024-06-01' AND '2024-06-30');
Solution
Step 1: Identify the time frames and logic
We want customers who ordered in May but not in June.
Step 2: Use NOT EXISTS to exclude June customers
The query selects May customers and excludes those with June orders using NOT EXISTS subquery.
Step 3: Check other options
SELECT customer_id FROM orders WHERE order_date BETWEEN '2024-06-01' AND '2024-06-30' EXCEPT SELECT customer_id FROM orders WHERE order_date BETWEEN '2024-05-01' AND '2024-05-31'; uses EXCEPT which MySQL does not support; C returns all customers in both months; D returns June customers only.
Final Answer:
SELECT customer_id FROM orders WHERE order_date BETWEEN '2024-05-01' AND '2024-05-31' AND NOT EXISTS (SELECT 1 FROM orders o2 WHERE o2.customer_id = orders.customer_id AND o2.order_date BETWEEN '2024-06-01' AND '2024-06-30'); -> Option D
Quick Check:
NOT EXISTS excludes June orders [OK]
Hint: Use NOT EXISTS with date ranges to exclude recent orders [OK]
Common Mistakes:
Using EXCEPT directly in MySQL
Selecting all orders without filtering
Confusing LEFT JOIN logic
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.