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

Bagaimana cara menghapus baris duplikat dari tampilan?

DISTINCT tidak akan membantu Anda jika baris memiliki kolom yang berbeda. Jelas, salah satu tabel tempat Anda bergabung memiliki beberapa baris untuk satu baris di tabel lain. Untuk mendapatkan kembali satu baris, Anda harus menghilangkan beberapa baris lainnya di tabel tempat Anda bergabung.

Cara termudah untuk melakukannya adalah dengan meningkatkan klausa where atau pembatasan GABUNG untuk hanya bergabung ke satu rekaman yang Anda inginkan. Biasanya ini memerlukan penentuan aturan yang akan selalu memilih entri 'benar' dari tabel lain.

Mari kita asumsikan Anda memiliki masalah sederhana seperti ini:

Person:  Jane
Pets: Cat, Dog

Jika Anda membuat gabungan sederhana di sini, Anda akan menerima dua catatan untuk Jane:

Jane|Cat
Jane|Dog

Ini sepenuhnya benar jika sudut pandang Anda adalah membuat daftar semua kombinasi orang dan hewan peliharaan. Namun, jika tampilan Anda seharusnya mencantumkan orang dengan hewan peliharaan, atau membuat daftar orang dan menampilkan salah satu hewan peliharaan mereka, Anda mengalami masalah sekarang. Untuk ini, Anda memerlukan aturan.

SELECT Person.Name, Pets.Name
FROM Person
  LEFT JOIN Pets pets1 ON pets1.PersonID = Person.ID
WHERE 0 = (SELECT COUNT(pets2.ID) 
             FROM Pets pets2
             WHERE pets2.PersonID = pets1.PersonID
                AND pets2.ID < pets1.ID);

Yang dilakukan adalah menerapkan aturan untuk membatasi catatan Pet yang di gabungkan ke Pet dengan ID terendah (pertama di tabel Pets). Klausa WHERE pada dasarnya mengatakan "di mana tidak ada hewan peliharaan milik orang yang sama dengan nilai ID yang lebih rendah).

Ini akan menghasilkan satu hasil rekaman:

Jane|Cat

Aturan yang harus Anda terapkan pada tampilan Anda akan bergantung pada data di kolom yang Anda miliki, dan catatan 'beberapa' mana yang harus ditampilkan di kolom. Namun, itu akan menyembunyikan beberapa data, yang mungkin bukan yang Anda inginkan. Misalnya, aturan di atas menyembunyikan fakta bahwa Jane memiliki Anjing. Itu membuatnya tampak seolah-olah Jane hanya memiliki Kucing, padahal ini tidak benar.

Anda mungkin perlu memikirkan kembali konten tampilan Anda, dan apa yang ingin Anda capai dengan tampilan Anda, jika Anda mulai memfilter data yang valid.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_MODIFY() Contoh di SQL Server (T-SQL)

  2. Cara Memeriksa Apakah Database SQL Rusak – Solusi untuk Memperbaiki File MDF

  3. Masukkan gambar ke dalam database

  4. Dapatkan semua tanggal antara dua tanggal di SQL Server

  5. Gabung penuh beberapa tabel pada kolom yang sama