ขณะทำงานใน Oracle คุณสามารถค้นหารายการที่ซ้ำกันในบางระเบียน คุณสามารถลบแถวที่ซ้ำกันโดยระบุแถวเหล่านั้นและใช้ที่อยู่แถวนามแฝง RowID ที่สอดคล้องกัน ก่อนเริ่มต้น ให้สร้างตารางสำรอง ในกรณีที่คุณต้องการข้อมูลอ้างอิงหลังจากลบระเบียนแล้ว
ขั้นตอน
วิธีที่ 1 จาก 4: การระบุรายการที่ซ้ำกัน
ขั้นตอนที่ 1 ระบุรายการที่ซ้ำกัน
ในตัวอย่างนี้ เราระบุ "Alan" ที่ซ้ำกัน ตรวจสอบให้แน่ใจว่าระเบียนที่จะลบนั้นซ้ำกันโดยป้อน SQL ด้านล่าง
ขั้นตอนที่ 2 ระบุจากคอลัมน์ชื่อ "ชื่อ"
ในกรณีที่คอลัมน์มีชื่อ "ชื่อ" คุณต้องแทนที่ " column_name " ด้วยชื่อ
ขั้นตอนที่ 3 ระบุคอลัมน์อื่นๆ
หากคุณกำลังพยายามระบุรายการซ้ำจากคอลัมน์ต่างๆ เช่น อายุของอลันแทนที่จะเป็นชื่อของเขา ให้ป้อน "อายุ" แทน " column_name " เป็นต้น
เลือก column_name, count(column_name) จากกลุ่มตารางตาม column_name มี count (column_name) > 1;
วิธีที่ 2 จาก 4: การลบรายการซ้ำ
ขั้นตอนที่ 1. เลือก " ชื่อจากชื่อ"
หลัง "SQL" (ย่อมาจาก Standard Query Language) ให้ป้อน " select name from names"
ขั้นตอนที่ 2 ลบแถวทั้งหมดที่มีชื่อซ้ำกัน
หลังจาก "SQL" ให้ป้อน " delete from names where name ='Alan';." ควรสังเกตว่าการใช้อักษรตัวพิมพ์ใหญ่เป็นสิ่งสำคัญเพื่อให้ขั้นตอนนี้สามารถลบบรรทัดทั้งหมดที่ชื่อ "Alan" หลังจาก "SQL" ให้ป้อน "commit"
ขั้นตอนที่ 3 ป้อนแถวใหม่โดยไม่ซ้ำกัน
ตอนนี้ คุณได้ลบแถวทั้งหมดและแทนที่ด้วย "Alan" แล้ว ให้กรอกข้อมูลกลับเข้าไปใหม่โดยป้อน " insert into name values ('Alan');." หลังจาก "SQL" ให้ป้อน " commit " เพื่อสร้างบรรทัดใหม่
ขั้นตอนที่ 4. ดูรายการใหม่
หลังจากทำตามขั้นตอนข้างต้นแล้ว คุณสามารถตรวจสอบให้แน่ใจว่าไม่มีระเบียนที่ซ้ำกันอีกต่อไปโดยป้อน " select * from names"
SQL > เลือกชื่อจากชื่อ; NAME ------------------------------ Alan Citra Tomi Alan Baris เลือกไว้ SQL > ลบออกจากชื่อโดยที่ name='Alan'; ไลน์ถูกลบ SQL > กระทำ; \Commit เสร็จสมบูรณ์ SQL > แทรกลงในชื่อค่า ('Alan'); สร้างแถวแล้ว SQL > กระทำ; มุ่งมั่นเสร็จสมบูรณ์ SQL > เลือก * จากชื่อ; NAME ------------------------------ เลือกแถว Alan Citra Tomi
วิธีที่ 3 จาก 4: การลบรายการที่ซ้ำกันหลายรายการ
ขั้นตอนที่ 1 เลือก RowID ที่คุณต้องการลบ
หลังจาก "SQL" ให้ป้อน " เลือก rowid ชื่อจากชื่อ;."
ขั้นตอนที่ 2. ลบรายการที่ซ้ำกัน
หลังจาก "SQL" ให้ป้อน " ลบจากชื่อ a โดยที่ rowid > (เลือก min(rowid) จากชื่อ b โดยที่ b.name=a.name);" เพื่อลบรายการที่ซ้ำกัน
ขั้นตอนที่ 3 ตรวจสอบรายการซ้ำ
หลังจากทำตามขั้นตอนข้างต้นแล้ว ให้ตรวจหารายการซ้ำโดยป้อน " select rowid, name from names;" แล้ว "มุ่งมั่น"
SQL > เลือก rowid, ชื่อจากชื่อ; ชื่อ ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan แถวที่เลือก SQL > ลบออกจากชื่อ a โดยที่ rowid > (เลือก min(rowid) จากชื่อ b โดยที่ b.name=a.name); แถวถูกลบ SQL > เลือก rowid, ชื่อจากชื่อ; ชื่อ ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom เลือกแถวแล้ว SQL > กระทำ; มุ่งมั่นเสร็จสมบูรณ์
วิธีที่ 4 จาก 4: การลบแถวตามคอลัมน์
ขั้นตอนที่ 1. เลือกแถว
หลังจาก "SQL" ให้ป้อน " select * from names;" เพื่อให้สามารถเห็นเส้น
ขั้นตอนที่ 2 ลบแถวที่ซ้ำกันโดยระบุคอลัมน์
หลังจาก "SQL'" ให้ป้อน " ลบออกจากชื่อ a โดยที่ rowid > (เลือก min(rowid) จากชื่อ b โดยที่ b.name=a.name และ b.age=a.age);" เพื่อลบบันทึกที่ซ้ำกัน
ขั้นตอนที่ 3 ตรวจสอบรายการซ้ำ
เมื่อคุณทำตามขั้นตอนข้างต้นเสร็จแล้ว ให้ป้อน " select * from names;" จากนั้น " commit " เพื่อดูว่ารายการที่ซ้ำกันถูกลบออกจริงหรือไม่
SQL > เลือก * จากชื่อ; ชื่อ อายุ ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 Alan 50 แถวที่เลือก SQL > ลบออกจากชื่อ a โดยที่ rowid > (เลือก min(rowid) จากชื่อ b โดยที่ b.name=a.name และ b.age=a.age); ลบแถวแล้ว SQL > เลือก * จากชื่อ; ชื่ออายุ ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 แถวที่เลือก. SQL > กระทำ; มุ่งมั่นเสร็จสมบูรณ์
คำเตือน
-
สร้างตารางที่ซ้ำกันในการเข้าสู่ระบบของคุณเพื่อใช้เป็นข้อมูลอ้างอิงเนื้อหาเมื่อไม่มีการลบข้อมูล (ในกรณีที่คุณมีคำถามใด ๆ)
SQL > สร้างตาราง alan.names_backup เป็น select * จากชื่อ; สร้างตารางแล้ว