Spaces:
Sleeping
Sleeping
| -- ============================================================ | |
| -- Supabase SQL: Remove Duplicate Courses | |
| -- ============================================================ | |
| -- Logic: | |
| -- 1. Group courses by EXACT title | |
| -- 2. Within each group, KEEP the row with the oldest created_at | |
| -- 3. DELETE all other duplicates | |
| -- | |
| -- Run this in Supabase SQL Editor. | |
| -- ============================================================ | |
| -- STEP 1: Preview duplicates (DRY RUN — won't delete anything) | |
| -- Uncomment and run this first to see what will be removed: | |
| -- SELECT id, title, created_at | |
| -- FROM courses | |
| -- WHERE id NOT IN ( | |
| -- SELECT DISTINCT ON (title) id | |
| -- FROM courses | |
| -- ORDER BY title, created_at ASC | |
| -- ) | |
| -- ORDER BY title, created_at; | |
| -- STEP 2: Delete duplicates (KEEP oldest record per title) | |
| DELETE FROM courses | |
| WHERE id NOT IN ( | |
| SELECT DISTINCT ON (title) id | |
| FROM courses | |
| ORDER BY title, created_at ASC | |
| ); | |
| -- STEP 3: Verify — should return exactly 26 unique courses | |
| SELECT count(*) AS total_courses FROM courses; | |
| SELECT id, title, created_at FROM courses ORDER BY created_at ASC; | |