Bird
Raised Fist0
PostgreSQLquery~20 mins

UPDATE with RETURNING clause in PostgreSQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Master of UPDATE with RETURNING
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
Output of UPDATE with RETURNING clause
Given the table employees with columns id, name, and salary, what is the output of this query?
UPDATE employees SET salary = salary + 1000 WHERE id = 3 RETURNING id, salary;
PostgreSQL
UPDATE employees SET salary = salary + 1000 WHERE id = 3 RETURNING id, salary;
A[{ "id": 3, "salary": 6000 }]
B[{ "id": 3, "salary": 5000 }]
C[]
DSyntaxError
Attempts:
2 left
💡 Hint
The RETURNING clause outputs the updated rows after the UPDATE.
🧠 Conceptual
intermediate
1:30remaining
Purpose of RETURNING clause in UPDATE
What is the main purpose of using the RETURNING clause in an UPDATE statement in PostgreSQL?
ATo return the rows that were updated with their new values
BTo rollback the update if a condition fails
CTo update multiple tables at once
DTo create a backup of the updated rows
Attempts:
2 left
💡 Hint
Think about what you want to see immediately after updating rows.
📝 Syntax
advanced
1:30remaining
Identify the syntax error in UPDATE with RETURNING
Which of the following UPDATE statements with RETURNING clause is syntactically correct?
AUPDATE products SET price = price * 1.1 RETURNING;
BUPDATE products SET price = price * 1.1 RETURNING id, price;
CUPDATE products SET price = price * 1.1 RETURNING id price;
DUPDATE products SET price = price * 1.1 RETURNING id, price
Attempts:
2 left
💡 Hint
RETURNING must specify columns or * and end with semicolon.
❓ optimization
advanced
2:00remaining
Optimizing UPDATE with RETURNING for multiple rows
You want to update salaries for all employees in department 5 by 10% and get their new salaries. Which query is the most efficient?
AUPDATE employees SET salary = salary * 1.1 WHERE department_id = 5; SELECT id, salary FROM employees WHERE department_id = 5;
BUPDATE employees SET salary = salary * 1.1 RETURNING id, salary WHERE department_id = 5;
CSELECT id, salary FROM employees WHERE department_id = 5; UPDATE employees SET salary = salary * 1.1 WHERE department_id = 5;
DUPDATE employees SET salary = salary * 1.1 WHERE department_id = 5 RETURNING id, salary;
Attempts:
2 left
💡 Hint
Consider how many queries run and how data is returned.
🔧 Debug
expert
2:00remaining
Error caused by incorrect RETURNING usage
What error will this query produce?
UPDATE orders SET status = 'shipped' RETURNING WHERE order_date < '2024-01-01';
ANo error, query runs successfully
BRuntimeError: invalid date format
CSyntaxError: missing columns after RETURNING
DTypeError: wrong data type in SET clause
Attempts:
2 left
💡 Hint
RETURNING must be followed by columns or *.

Practice

(1/5)
1. What does the RETURNING clause do in a PostgreSQL UPDATE statement?
easy
A. It returns the updated rows immediately after the update.
B. It deletes the rows after updating them.
C. It creates a backup of the updated rows.
D. It prevents the update from happening.

Solution

  1. Step 1: Understand the purpose of UPDATE

    The UPDATE statement changes data in existing rows of a table.
  2. Step 2: Role of RETURNING clause

    The RETURNING clause immediately outputs the rows that were updated, showing their new values.
  3. Final Answer:

    It returns the updated rows immediately after the update. -> Option A
  4. Quick Check:

    RETURNING shows updated rows [OK]
Hint: RETURNING shows updated rows right after update [OK]
Common Mistakes:
  • Thinking RETURNING deletes rows
  • Assuming RETURNING creates backups
  • Believing RETURNING stops the update
2. Which of the following is the correct syntax to update a table and return the updated rows in PostgreSQL?
easy
A. UPDATE table_name SET column1 = value1 WHERE condition RETURNING *;
B. UPDATE table_name SET column1 = value1 RETURN * WHERE condition;
C. UPDATE table_name RETURNING * SET column1 = value1 WHERE condition;
D. UPDATE table_name SET column1 = value1 WHERE condition SHOW RETURNING *;

Solution

  1. Step 1: Identify correct UPDATE syntax

    The UPDATE statement must have SET clause before WHERE clause.
  2. Step 2: Position of RETURNING clause

    RETURNING clause comes after WHERE clause to output updated rows.
  3. Final Answer:

    UPDATE table_name SET column1 = value1 WHERE condition RETURNING *; -> Option A
  4. Quick Check:

    RETURNING follows WHERE in UPDATE [OK]
Hint: RETURNING always comes after WHERE clause [OK]
Common Mistakes:
  • Placing RETURNING before SET clause
  • Using SHOW RETURNING which is invalid
  • Putting RETURNING between SET and WHERE
3. Given the table employees with columns id, salary, and department, what will this query return?
UPDATE employees SET salary = salary + 500 WHERE department = 'Sales' RETURNING id, salary;
medium
A. Only the number of rows updated, no data returned.
B. All employees' ids and salaries regardless of department.
C. All employees' ids and new salaries in the Sales department after the raise.
D. An error because RETURNING cannot specify columns.

Solution

  1. Step 1: Understand the UPDATE condition

    The query updates salary by adding 500 only for employees in the Sales department.
  2. Step 2: Effect of RETURNING clause

    RETURNING id, salary outputs the id and updated salary of only those employees updated.
  3. Final Answer:

    All employees' ids and new salaries in the Sales department after the raise. -> Option C
  4. Quick Check:

    RETURNING outputs updated rows only [OK]
Hint: RETURNING shows only updated rows, not all rows [OK]
Common Mistakes:
  • Thinking all rows are returned
  • Expecting only count of updated rows
  • Believing RETURNING cannot specify columns
4. What is wrong with this query?
UPDATE products RETURNING * SET price = price * 1.1 WHERE category = 'Books';
medium
A. The price calculation is invalid syntax.
B. The RETURNING clause is placed before SET, causing a syntax error.
C. The WHERE clause is missing.
D. RETURNING cannot be used with UPDATE.

Solution

  1. Step 1: Check clause order in UPDATE

    UPDATE syntax requires SET before WHERE and RETURNING last.
  2. Step 2: Identify error in query

    RETURNING appears before SET, which is invalid and causes syntax error.
  3. Final Answer:

    The RETURNING clause is placed before SET, causing a syntax error. -> Option B
  4. Quick Check:

    RETURNING must come after WHERE and SET [OK]
Hint: RETURNING always comes last after WHERE [OK]
Common Mistakes:
  • Placing RETURNING before SET
  • Omitting WHERE clause when needed
  • Misordering clauses in UPDATE
5. You want to increase the salary by 10% for employees in the 'Engineering' department and immediately get their id, old_salary, and new_salary. Which query correctly does this using UPDATE with RETURNING?
hard
A. UPDATE employees SET salary = salary * 1.1 WHERE department = 'Engineering' RETURNING id, salary, salary / 1.1 AS old_salary;
B. UPDATE employees SET salary = salary * 1.1 WHERE department = 'Engineering' RETURNING id, salary, salary * 1.1 AS old_salary;
C. UPDATE employees SET salary = salary * 1.1 WHERE department = 'Engineering' RETURNING id, salary AS old_salary, salary * 1.1 AS new_salary;
D. UPDATE employees SET salary = salary * 1.1 WHERE department = 'Engineering' RETURNING id, salary AS new_salary, salary / 1.1 AS old_salary;

Solution

  1. Step 1: Understand the salary update

    Salary is multiplied by 1.1 to increase by 10%, so new salary is salary * 1.1.
  2. Step 2: Calculate old salary in RETURNING

    After update, salary column shows new salary. To get old salary, divide new salary by 1.1.
  3. Step 3: Check aliasing in RETURNING

    RETURNING must show id, new_salary (salary), and old_salary (salary / 1.1) with correct aliases.
  4. Final Answer:

    UPDATE employees SET salary = salary * 1.1 WHERE department = 'Engineering' RETURNING id, salary AS new_salary, salary / 1.1 AS old_salary; -> Option D
  5. Quick Check:

    Old salary = new salary / 1.1 [OK]
Hint: Use RETURNING with expressions and aliases for old and new values [OK]
Common Mistakes:
  • Confusing old and new salary calculations
  • Wrong aliasing in RETURNING clause
  • Using expressions incorrectly in RETURNING
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard