Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách xóa tất cả các hàng phụ thuộc

Nếu bạn không được phép sửa đổi các bảng, bạn có thể xem EXISTS toán tử.
Nó sẽ cho phép bạn xóa các hàng khỏi bảng chỉ khi truy vấn bên trong EXISTS trả về ít nhất 1 kết quả. Bạn có thể sử dụng nó để kiểm tra sự phụ thuộc.

Bạn có thể viết 3 truy vấn:

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ái đầu tiên sẽ xử lý bản ghi trong C tham chiếu đến các bản ghi trong B tham chiếu đến các bản ghi trong A mà bạn muốn xóa.
Sau đó, bạn có thể xóa các bản ghi khỏi B vì không còn phụ thuộc nào nữa trong C .
Cuối cùng, bạn có thể xóa các bản ghi khỏi A sử dụng cùng một logic.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tác động của sự kiện mở rộng query_post_execution_showplan trong SQL Server 2012

  2. Làm cách nào để lấy tổng của nhiều giá trị ngày giờ?

  3. Mẹo để cải thiện hiệu suất của DB có kích thước trên 40 GB (Sql Server 2005) và tăng khoảng 3 GB hàng tháng

  4. Cập nhật nhiều cột trong SQL

  5. Nhóm T-SQL Hàng thành Cột