Bird
0
0

Why does this recursive CTE cause an error or infinite loop?

medium📝 Debug Q7 of 15
SQL - Common Table Expressions (CTEs)
Why does this recursive CTE cause an error or infinite loop?
WITH RECURSIVE cte AS (SELECT 1 AS val UNION ALL SELECT val + 1 FROM cte) SELECT * FROM cte WHERE val < 5;
AMissing termination condition in the recursive part
BIncorrect use of UNION instead of UNION ALL
CAnchor member is invalid
DWHERE clause should be inside the CTE
Step-by-Step Solution
Solution:
  1. Step 1: Examine Recursive Member

    Recursive SELECT lacks a WHERE clause to stop recursion.
  2. Step 2: Effect of Missing Condition

    Without a termination condition, recursion continues indefinitely.
  3. Step 3: WHERE Clause Location

    WHERE outside CTE filters final output but does not stop recursion.
  4. Final Answer:

    Missing termination condition in the recursive part -> Option A
  5. Quick Check:

    Always include recursion stop condition inside CTE [OK]
Quick Trick: Termination condition must be inside recursive member [OK]
Common Mistakes:
  • Placing WHERE clause outside CTE expecting to stop recursion
  • Confusing UNION and UNION ALL as cause of error

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More SQL Quizzes