Pengenalan
Pangkalan data SQL sering mengalami rekod pendua, menghalang analisis data dan kecekapan operasi. Panduan ini menyediakan teknik praktikal untuk mengeluarkan penyertaan yang berlebihan ini, sama ada anda bekerja dengan data pelanggan, log transaksi, atau dataset lain. Kami akan meliputi sintaks SQL, contoh dunia sebenar, dan amalan terbaik untuk memastikan integriti data sepanjang proses de-duplikasi.
Kawasan utama dilindungi
Panduan ini menangani punca akar rekod pendua dalam SQL, meneroka pelbagai kaedah pengesanan dan penyingkiran, butiran sintaks SQL yang berkaitan, dan menyoroti amalan terbaik untuk mengekalkan kualiti data.
Jadual Kandungan
- Mengeluarkan baris pendua di SQL
- Mengenal pasti penyertaan pendua
-
ROW_NUMBER()
untuk penyingkiran pendua - Kaedah Join Self untuk Penghapusan Duplikat
- Membuat jadual baru dengan rekod yang unik
- Soalan yang sering ditanya
Bagaimana untuk memadam baris pendua dalam SQL?
Beberapa kaedah wujud untuk menghapuskan baris pendua dalam SQL, masing -masing dengan kekuatannya sendiri. Pendekatan optimum bergantung kepada sistem pangkalan data anda dan keperluan khusus.
Punca data pendua biasa
Baris pendua sering berpunca dari:
- Kesalahan kemasukan data: Kesalahan manusia semasa input manual.
- Penggabungan Dataset: Menggabungkan dataset tanpa de-huplikasi yang betul.
- Proses import yang rosak: Kesilapan semasa prosedur import data.
Mengenal pasti rekod pendua
Sebelum penghapusan, anda mesti mengenal pasti baris pendua terlebih dahulu. Ini biasanya berkongsi nilai yang sama di satu atau lebih lajur.
Sintaks SQL:
Pilih Column1, Column2, Count (*) Dari table_name Kumpulan mengikut lajur1, lajur2 Mempunyai kiraan (*)> 1;
Contoh:
Pertimbangkan jadual employees
:
id | nama | e -mel |
---|---|---|
1 | Alice | alice@example.com |
2 | Bob | bob@example.com |
3 | Carol | carol@example.com |
4 | Alice | alice@example.com |
5 | Dave | dave@example.com |
Untuk mencari e -mel pendua:
Pilih e -mel, kiraan (*) Dari pekerja Kumpulan melalui e -mel Mempunyai kiraan (*)> 1;
Output:
e -mel | Kiraan (*) |
---|---|
alice@example.com | 2 |
Ini mendedahkan e -mel yang muncul lebih dari sekali.
Mengeluarkan pendua menggunakan ROW_NUMBER()
Fungsi tetingkap ROW_NUMBER()
memberikan nombor berurutan yang unik untuk setiap baris dalam partition, membolehkan penyingkiran pendua yang cekap.
Sintaks SQL:
Dengan CTE sebagai ( Pilih Column1, Column2, Row_number () over (partition by column1, column2 order by (pilih null)) sebagai rn Dari table_name ) Padam dari CTE Di mana rn> 1;
Contoh:
Untuk mengalih keluar employees
pendua berdasarkan e -mel:
Dengan CTE sebagai ( Pilih ID, Nama, E -mel, Row_number () lebih (partition melalui pesanan e -mel oleh id) sebagai rn Dari pekerja ) Padam dari CTE Di mana rn> 1;
Output:
Jadual kini hanya mengandungi entri yang unik.
Mengeluarkan pendua menggunakan gabungan diri
Join sendiri menyediakan satu lagi kaedah yang berkesan untuk mengenal pasti dan memadam pendua.
Sintaks SQL:
Padam T1 Dari table_name t1 Sertai Table_name T2 Pada t1.column1 = t2.column1 Dan t1.column2 = t2.column2 Dan t1.id> t2.id;
Contoh:
Untuk menghapuskan pendua daripada employees
:
Padam E1 Dari pekerja E1 Sertai Pekerja E2 Pada e1.email = e2.email Dan e1.id> e2.id;
Output:
Jadual kini hanya mengandungi entri yang unik.
Membuat jadual baru dengan rekod yang unik
Mewujudkan jadual baru yang mengandungi hanya rekod unik dan kemudian menggantikan jadual asal adalah pendekatan yang mantap dan selamat.
Sintaks SQL:
Buat jadual baru_table sebagai Pilih berbeza * Dari Old_table; Drop meja lama_table; Alter Table New_table Namakan semula ke Old_table;
Contoh:
Membersihkan pendua dalam employees
:
Buat jadual pekerja_unique sebagai Pilih berbeza * Dari pekerja; Pekerja drop meja; Alter Table Pekerja_Unique menamakan semula kepada pekerja;
Output:
Jadual employees
kini hanya mengandungi baris unik.
Amalan terbaik untuk mencegah pendua
- Pengesahan Data: Melaksanakan peraturan pengesahan sebelum penyisipan data.
- Kekangan yang unik: Gunakan kekangan yang unik pada lajur yang berkaitan.
- Audit biasa: Mengendalikan pemeriksaan data berkala untuk mengekalkan ketepatan.
Kesimpulan
Pengurusan baris duplikat yang berkesan adalah penting untuk penyelenggaraan pangkalan data. Kaedah yang diterangkan- ROW_NUMBER()
, diri sendiri, dan membuat jadual baru-menawarkan pelbagai cara untuk mencapai matlamat ini. Ingatlah untuk menyandarkan data anda sebelum melakukan sebarang operasi penghapusan.
Soalan yang sering ditanya
Q1. Apa yang menyebabkan baris pendua dalam pangkalan data SQL? A. Kesalahan kemasukan data, isu import, dan penggabungan dataset yang tidak betul.
S2. Bagaimana untuk mengelakkan kehilangan data yang tidak disengajakan semasa de-duplikasi? A. Sandarkan data anda dan semak semula pertanyaan SQL anda dengan teliti.
Q3. Bolehkah pendua dikeluarkan tanpa mengubah jadual asal? A. Ya, dengan membuat jadual baru dengan rekod yang unik.
Q4. ROW_NUMBER()
vs DISTINCT
untuk penyingkiran pendua? A. ROW_NUMBER()
menawarkan lebih banyak kawalan berbutir di mana baris disimpan. DISTINCT
hanya menghilangkan pendua.
Atas ialah kandungan terperinci Bagaimana untuk memadam baris pendua dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Pelaburan adalah berkembang pesat, tetapi modal sahaja tidak mencukupi. Dengan penilaian yang semakin meningkat dan tersendiri pudar, pelabur dalam dana usaha yang berfokus pada AI mesti membuat keputusan utama: Beli, membina, atau rakan kongsi untuk mendapatkan kelebihan? Inilah cara menilai setiap pilihan dan PR

Mari kita bercakap mengenainya. Analisis terobosan AI yang inovatif ini adalah sebahagian daripada liputan lajur Forbes yang berterusan pada AI terkini, termasuk mengenal pasti dan menerangkan pelbagai kerumitan AI yang memberi kesan (lihat pautan di sini). Menuju ke Agi dan

Ingat banjir model Cina sumber terbuka yang mengganggu industri Genai awal tahun ini? Walaupun Deepseek mengambil sebahagian besar tajuk utama, Kimi K1.5 adalah salah satu nama yang terkenal dalam senarai. Dan model itu agak sejuk.

Mari kita bercakap mengenainya. Analisis terobosan AI yang inovatif ini adalah sebahagian daripada liputan lajur Forbes yang berterusan pada AI terkini, termasuk mengenal pasti dan menerangkan pelbagai kerumitan AI yang memberi kesan (lihat pautan di sini). Bagi pembaca yang h

Menjelang pertengahan tahun 2025, AI "perlumbaan senjata" dipanaskan, dan Xai dan Anthropic kedua-duanya mengeluarkan model perdana mereka, Grok 4 dan Claude 4. Kedua-dua model ini berada di hujung falsafah reka bentuk dan platform penempatan, namun mereka

Sebagai contoh, jika anda bertanya kepada model soalan seperti: "Apa yang dilakukan oleh orang (x) di (x) syarikat?" Anda mungkin melihat rantaian pemikiran yang kelihatan seperti ini, dengan asumsi sistem tahu bagaimana untuk mendapatkan maklumat yang diperlukan: mencari butiran mengenai CO

Senat mengundi 99-1 pagi Selasa untuk membunuh moratorium selepas kegemparan terakhir dari kumpulan advokasi, penggubal undang-undang dan puluhan ribu rakyat Amerika yang melihatnya sebagai penindasan berbahaya. Mereka tidak diam. Senat mendengarkan.

Ujian klinikal adalah kesesakan besar dalam pembangunan dadah, dan Kim dan Reddy menganggap perisian AI-enabled yang mereka bina di PI Health dapat membantu melakukannya dengan lebih cepat dan lebih murah dengan memperluaskan kumpulan pesakit yang berpotensi yang layak. Tetapi yang
