TGViewer
SQL и Анализ данных SQL и Анализ данных @databases_tg · 12.5K subscribers
Post #1011 4.42K
🔥 CTE + DELETE — это комбинация общего табличного выражения (Common Table Expression, CTE) и оператора DELETE, которая позволяет удобно удалять строки из таблицы, особенно в случаях, когда удаление зависит от сложного подзапроса или JOIN-ов.

🔍 Что такое CTE?
CTE (WITH выражение) — это временный набор данных, определённый перед основным SQL-запросом.

🧹 Зачем использовать CTE с DELETE?
Упрощает чтение и понимание кода при сложных условиях.

Позволяет использовать JOIN, ROW_NUMBER() и другие функции перед удалением.

Избавляет от подзапросов в WHERE, которые иногда трудно читать.

📌 Пример: Удалить дубликаты по email, оставив только один


WITH duplicates AS (
SELECT id,
ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) AS rn
FROM users
)
DELETE FROM users
WHERE id IN (
SELECT id FROM duplicates WHERE rn > 1
);


🧠 Здесь:

CTE duplicates присваивает каждой строке номер внутри группы одинаковых email.

Удаляем все строки, где rn > 1 — то есть дубликаты.

📌 Пример: Удаление с JOIN


WITH to_delete AS (
SELECT u.id
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.status = 'cancelled'
)
DELETE FROM users
WHERE id IN (SELECT id FROM to_delete);


📌 Поддержка:
Работает в PostgreSQL, SQL Server, Oracle (с USING или WITH).

В MySQL с 8.0+ CTE поддерживаются, но DELETE с CTE может потребовать подзапрос.
  • 👍 12
  • ❤ 7
  • 😁 2
  • 💊 2
  • 🔥 1
More from @databases_tg
  1. Oct 2, 2026Как SQLite превращает числа в текст в 2 раза быстрее? Трюк с парами цифр Обычно число пере…
  2. Oct 2, 2026В субботу, 17 октября, Москва станет точкой притяжения для всех специалистов в области Rec…
  3. Oct 1, 2026Жиз
  4. Sep 30, 2026📝 5 уровней ИИ-агентов: от промпта до продакшена Context, loop, Jev, harness и evals: раз…
  5. Sep 26, 2026UPDATE — оператор обновления данных в MySQL 🗂️ Если в таблице нужно изменить значение в у…
  6. Sep 25, 2026🧠 SQL-задача с подвохом Есть таблица транзакций: CREATE TABLE transactions ( id int PRIMA…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →