Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да изтриете всички зависими редове

Ако нямате право да променяте таблиците, можете да погледнете EXISTS оператор.
Това ще ви позволи да изтриете редове от таблица само ако заявката вътре в EXISTS върне поне 1 резултат. Можете да го използвате, за да проверите зависимостите.

Можете да напишете 3 заявки:

DELETE C c
WHERE EXISTS (SELECT 1
              FROM B b
              WHERE c.b = b.b
              AND EXISTS (SELECT 1
                          FROM A a
                          WHERE a.a = b.a
                          AND ... ));
DELETE B b
WHERE EXISTS (SELECT 1
              FROM A a
              WHERE a.a = b.a
              AND ...);

DELETE A a
WHERE ...

Първият ще се грижи за записа в C който препраща към записи в B който препраща към записи в A които искате да изтриете.
След това можете да премахнете записи от B тъй като няма повече зависимости в C .
Накрая можете да изтриете записи от A използвайки същата логика.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Невалиден тип параметър (numpy.int64) при вмъкване на редове с executemany()

  2. Локален отчет спрямо сървърен отчет в ASP .Net контрол за преглед на отчети

  3. Как да премахнете дубликати от низ в SQL

  4. Въздействие върху приложението при мигриране от sql сървър 2005 към 2008

  5. SQL UPDATE оператор за превключване на две стойности в два реда