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

Cách xóa các bản ghi KHÔNG VÀO

Tôi muốn bắt đầu với các giả định.

  1. Bạn có một mô hình dữ liệu giống như chuỗi:Dự án - * Dự án - * Sơ đồ
  2. Mục tiêu của bạn là chỉ có các chuỗi hợp lệ, vì vậy không có ProjectSchemes nào mà không có Project, không có sơ đồ nào mà không có ProjectSchemes.
  3. NULL không phải là giá trị hợp lệ cho một trong các id của bạn.
  4. Tất cả id là duy nhất trong bảng của họ
  5. Bạn không sử dụng cơ chế toàn vẹn tham chiếu của cơ sở dữ liệu của mình

Kết quả là SELECT của bạn sẽ liệt kê sche_id cho tất cả các Lược đồ trong bảng Lược đồ.

Nói rằng, bạn nên bắt đầu xóa tất cả các ProjectSchemes mà không có Project tương ứng. Đây là những ProjectSchemes có id là NULL hoặc id không tồn tại trong Bảng dự án:

DELETE ProjectSchemes WHERE (Project_Id is NULL) OR 
(NOT EXISTS (SELECT * FROM Projects WHERE
             Projects.Project_Id = ProjectSchemes.Project_Id))

Sau khi xóa ProjectsSchemes mà không có Project, bây giờ chúng ta có thể có một số trẻ mồ côi mới trong Bảng lược đồ. Việc tiếp theo là xóa tất cả các Lược đồ có id là NULL hoặc id không tồn tại trong Bảng ProjectsSchemes:

DELETE Schemes WHERE (Scheme_Id is NULL) OR 
(NOT EXISTS (SELECT * FROM ProjectSchemes WHERE
             ProjectSchemes.Scheme_Id = Schemes.Scheme_Id))

Vẫn có cơ hội có các lược đồ không được kết nối với một dự án mà không xóa các Đề án.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các lựa chọn thay thế SQL Server Management Studio để duyệt / chỉnh sửa bảng và chạy các truy vấn

  2. Kết nối SQL Server 2008 với Java:Đăng nhập không thành công do lỗi người dùng

  3. Cách lấy danh sách các Bảng không có Ràng buộc Khóa Chính trong Cơ sở dữ liệu SQL Server - Hướng dẫn SQL Server / T-SQL Phần 58

  4. Tôi có nên thiết kế một bảng với khóa chính là varchar hoặc int?

  5. Tạo cột được tính toán bằng cách sử dụng dữ liệu từ một bảng khác