It updates an existing row if a new insert would cause a duplicate key error, instead of causing an error.
Click to reveal answer
beginner
Which SQL statement uses ON DUPLICATE KEY UPDATE?
The INSERT statement can use ON DUPLICATE KEY UPDATE to handle duplicate keys gracefully.
Click to reveal answer
intermediate
How do you update a column named count by adding 1 when a duplicate key occurs?
Use ON DUPLICATE KEY UPDATE count = count + 1 in your INSERT statement.
Click to reveal answer
intermediate
Can ON DUPLICATE KEY UPDATE be used to update multiple columns?
Yes, you can update multiple columns by separating assignments with commas, like ON DUPLICATE KEY UPDATE col1 = val1, col2 = val2.
Click to reveal answer
beginner
What happens if no duplicate key is found when using ON DUPLICATE KEY UPDATE?
The row is inserted normally without any update.
Click to reveal answer
What does ON DUPLICATE KEY UPDATE do in a MySQL INSERT statement?
ADeletes the existing row if a duplicate key is found
BThrows an error and stops the query
CIgnores the insert if a duplicate key is found
DUpdates the existing row if a duplicate key is found
✗ Incorrect
It updates the existing row instead of throwing an error when a duplicate key is found.
Which keyword is used with INSERT to handle duplicate keys?
AON ERROR IGNORE
BON DUPLICATE KEY UPDATE
CIF EXISTS UPDATE
DON CONFLICT DO NOTHING
✗ Incorrect
ON DUPLICATE KEY UPDATE is the MySQL syntax for handling duplicate keys during insert.
How do you increase a numeric column visits by 1 on duplicate key?
AON DUPLICATE KEY UPDATE visits = visits + 1
BON DUPLICATE KEY UPDATE visits = 1
CON DUPLICATE KEY UPDATE visits += 1
DON DUPLICATE KEY UPDATE visits++
✗ Incorrect
You must explicitly set visits = visits + 1 in the update clause.
Can ON DUPLICATE KEY UPDATE update multiple columns?
AYes, by separating assignments with commas
BNo, only one column can be updated
CYes, but only if columns are numeric
DNo, it only inserts new rows
✗ Incorrect
Multiple columns can be updated by separating each assignment with commas.
What happens if no duplicate key exists when using ON DUPLICATE KEY UPDATE?
AThe row is updated anyway
BThe query fails
CThe row is inserted normally
DThe query is ignored
✗ Incorrect
If no duplicate key exists, the row is inserted as usual.
Explain how ON DUPLICATE KEY UPDATE works in MySQL and give a simple example.
Think about inserting a row that might already exist.
You got /3 concepts.
Describe a real-life scenario where ON DUPLICATE KEY UPDATE is useful.
Consider tracking website visits or inventory counts.
You got /3 concepts.
Practice
(1/5)
1. What does the ON DUPLICATE KEY UPDATE clause do in a MySQL INSERT statement?
easy
A. It deletes rows with duplicate keys before inserting new ones.
B. It updates existing rows if a duplicate key is found during insert.
C. It ignores the insert if a duplicate key exists.
D. It creates a new table when a duplicate key is found.
Solution
Step 1: Understand the purpose of ON DUPLICATE KEY UPDATE
This clause allows an INSERT statement to update existing rows if a duplicate key (like a primary key) is found instead of causing an error.
Step 2: Compare options with this behavior
Only It updates existing rows if a duplicate key is found during insert. correctly describes this behavior. The other options describe different actions that are not what this clause does.
Final Answer:
It updates existing rows if a duplicate key is found during insert. -> Option B
Quick Check:
ON DUPLICATE KEY UPDATE = update on duplicate [OK]
Hint: It updates rows when duplicate keys appear during insert [OK]
Common Mistakes:
Thinking it deletes rows instead of updating
Assuming it ignores duplicates silently
Confusing it with creating new tables
2. Which of the following is the correct syntax to use ON DUPLICATE KEY UPDATE in MySQL?
easy
A. INSERT INTO table (id, val) VALUES (1, 'a') ON DUPLICATE KEY UPDATE val = 'b';
B. INSERT INTO table (id, val) VALUES (1, 'a') DUPLICATE KEY UPDATE val = 'b';
C. INSERT INTO table (id, val) VALUES (1, 'a') ON DUPLICATE UPDATE val = 'b';
D. INSERT INTO table (id, val) VALUES (1, 'a') ON DUPLICATE KEY SET val = 'b';
Solution
Step 1: Recall the correct syntax format
The correct syntax is INSERT INTO ... VALUES (...) ON DUPLICATE KEY UPDATE column = value;
Step 2: Match options with correct syntax
Only INSERT INTO table (id, val) VALUES (1, 'a') ON DUPLICATE KEY UPDATE val = 'b'; matches the exact syntax. The other options have incorrect keywords or missing parts.
Final Answer:
INSERT INTO table (id, val) VALUES (1, 'a') ON DUPLICATE KEY UPDATE val = 'b'; -> Option A
Quick Check:
Correct syntax includes 'ON DUPLICATE KEY UPDATE' [OK]
Hint: Remember full phrase: ON DUPLICATE KEY UPDATE [OK]
Common Mistakes:
Omitting the word KEY
Using UPDATE without ON DUPLICATE KEY
Replacing UPDATE with SET
3. Given the table users(id INT PRIMARY KEY, name VARCHAR(20), points INT) with data: (1, 'Alice', 10) What will be the result after running?
INSERT INTO users (id, name, points) VALUES (1, 'Alice', 20) ON DUPLICATE KEY UPDATE points = points + 5;
medium
A. A new row with id=1 and points=20 is inserted.
B. The existing row with id=1 is updated to points=5.
C. The existing row with id=1 is updated to points=15.
D. The query causes a duplicate key error.
Solution
Step 1: Identify duplicate key and update action
The id 1 already exists, so the ON DUPLICATE KEY UPDATE clause triggers. It updates points by adding 5 to the existing value.
Step 2: Calculate updated points value
Existing points = 10, so new points = 10 + 5 = 15.
Final Answer:
The existing row with id=1 is updated to points=15. -> Option C
Quick Check:
points = 10 + 5 = 15 [OK]
Hint: Update adds to existing value on duplicate key [OK]
Common Mistakes:
Thinking it inserts a new row instead of updating
Assuming points become 20 instead of adding 5
Expecting an error on duplicate key
4. What is wrong with this query?
INSERT INTO products (id, stock) VALUES (5, 10) ON DUPLICATE KEY UPDATE stock = stock + 1,;
medium
A. The VALUES keyword is not allowed with ON DUPLICATE KEY UPDATE.
B. The ON DUPLICATE KEY UPDATE clause is missing a column.
C. The stock column cannot be updated this way.
D. The comma before the semicolon causes a syntax error.
Solution
Step 1: Check syntax of ON DUPLICATE KEY UPDATE clause
The clause ends with a comma before the semicolon, which is invalid syntax in SQL.
Step 2: Identify correct syntax rules
There should be no trailing comma after the last update assignment.
Final Answer:
The comma before the semicolon causes a syntax error. -> Option D
Quick Check:
Trailing comma in UPDATE clause = syntax error [OK]
Hint: No trailing comma after last update assignment [OK]
Common Mistakes:
Leaving a comma after last column update
Confusing VALUES usage with ON DUPLICATE KEY UPDATE
Thinking stock column can't be updated
5. You want to insert a new user or update their score only if the new score is higher than the existing one. Which query correctly uses ON DUPLICATE KEY UPDATE for this?
hard
A. INSERT INTO users (id, score) VALUES (2, 50) ON DUPLICATE KEY UPDATE score = IF(score < VALUES(score), VALUES(score), score);
B. INSERT INTO users (id, score) VALUES (2, 50) ON DUPLICATE KEY UPDATE score = VALUES(score);
C. INSERT INTO users (id, score) VALUES (2, 50) ON DUPLICATE KEY UPDATE score = score + VALUES(score);
D. INSERT INTO users (id, score) VALUES (2, 50) ON DUPLICATE KEY UPDATE score = score - VALUES(score);
Solution
Step 1: Understand the requirement
We want to update the score only if the new score is greater than the existing score.
Step 2: Analyze each option's update logic
INSERT INTO users (id, score) VALUES (2, 50) ON DUPLICATE KEY UPDATE score = VALUES(score); always replaces the score, ignoring if it's higher or not. INSERT INTO users (id, score) VALUES (2, 50) ON DUPLICATE KEY UPDATE score = IF(score < VALUES(score), VALUES(score), score); uses IF to update only if new score is higher. INSERT INTO users (id, score) VALUES (2, 50) ON DUPLICATE KEY UPDATE score = score + VALUES(score); adds scores, which is not the requirement. INSERT INTO users (id, score) VALUES (2, 50) ON DUPLICATE KEY UPDATE score = score - VALUES(score); subtracts scores, which is incorrect.
Final Answer:
INSERT INTO users (id, score) VALUES (2, 50) ON DUPLICATE KEY UPDATE score = IF(score < VALUES(score), VALUES(score), score); -> Option A
Quick Check:
Use IF to update only if new score is higher [OK]
Hint: Use IF(condition, new, old) to update conditionally [OK]
Common Mistakes:
Always overwriting score without condition
Adding scores instead of comparing
Subtracting scores mistakenly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.