Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Menghapus Catatan TIDAK DI

Saya ingin memulai dengan asumsi.

  1. Anda memiliki model data seperti rantai:Proyek --* Skema Proyek --* Skema
  2. Target Anda adalah hanya memiliki rantai yang valid, jadi tidak ada Skema Proyek tanpa Proyek, tidak ada Skema tanpa Skema Proyek.
  3. NULL bukan nilai yang valid untuk salah satu ID Anda.
  4. Semua id unik di tabelnya
  5. Anda tidak menggunakan mekanisme integritas referensial database Anda

Akibatnya SELECT Anda akan mencantumkan schema_id untuk semua Skema di tabel Skema.

Mengatakan itu, Anda harus mulai menghapus semua ProjectSchemes tanpa Proyek yang sesuai. Ini adalah ProjectSchemes dengan id NULL atau id yang tidak ada di Tabel Proyek:

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

Setelah menghapus ProjectsSchemes tanpa Project, kami sekarang mungkin memiliki beberapa anak yatim baru di Tabel Skema. Hal selanjutnya adalah menghapus semua Skema yang memiliki id NULL atau id yang tidak ada di Tabel ProjectsSchemes:

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

Masih ada peluang untuk memiliki skema yang tidak terhubung ke proyek tanpa menghapus Skema Proyek.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mempertahankan ORDER BY di SELECT INTO

  2. TSQL:Pemisahan/penguraian string bersarang ke dalam tabel (beberapa Tag gabungan:Nilai dalam satu string)

  3. Bagaimana kita bisa menggunakan ISNULL untuk semua Nama Kolom di SQL Server 2008?

  4. Temukan indeks kemunculan terakhir dari sub-string menggunakan T-SQL

  5. Grup Pengguna Charlotte SQL Server:Perbaiki Kueri Lambat. Cepat.