เมื่อทำงานใน Oracle คุณอาจพบว่าบันทึกบางรายการของคุณมีข้อมูลซ้ำซ้อน คุณสามารถลบแถวที่ซ้ำกันเหล่านี้ได้โดยการระบุและใช้ RowID หรือที่อยู่ของแถว ก่อนที่คุณจะเริ่มต้น คุณควรสร้างตารางสำรองในกรณีที่คุณจำเป็นต้องอ้างอิงหลังจากคุณลบระเบียนแล้ว
ขั้นตอน
วิธีที่ 1 จาก 4: ระบุรายการซ้ำของคุณ
ขั้นตอนที่ 1 ระบุรายการที่ซ้ำกัน
ในกรณีนี้ ให้ระบุตัวอย่างที่ซ้ำกัน "Alan" ตรวจสอบให้แน่ใจว่าระเบียนที่คุณพยายามลบนั้นซ้ำกันจริง ๆ โดยป้อน SQL ด้านล่าง
ขั้นตอนที่ 2 การระบุจากคอลัมน์ชื่อ "Names
"ในกรณีของคอลัมน์ชื่อ "Names" คุณจะต้องแทนที่ "column_name" ด้วย Names
ขั้นตอนที่ 3 การระบุจากคอลัมน์อื่น
หากคุณกำลังพยายามระบุชื่อที่ซ้ำกันโดยใช้คอลัมน์อื่น เช่น อายุของอลันแทนที่จะเป็นชื่อของเขา คุณจะต้องป้อน "Ages" แทน "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. ดูรายการใหม่ของคุณ
เมื่อคุณทำตามขั้นตอนข้างต้นเสร็จแล้ว คุณสามารถตรวจสอบให้แน่ใจว่าคุณไม่มีบันทึกที่ซ้ำกันอีกต่อไปโดยป้อน "เลือก * จากชื่อ"
SQL > เลือกชื่อจากชื่อ; NAME ------------------------------ Alan Carrie Tom Alan เลือกแถวแล้ว SQL > ลบออกจากชื่อโดยที่ name='Alan'; แถวที่ถูกลบ SQL > กระทำ; มุ่งมั่นเสร็จสมบูรณ์ SQL > ใส่ค่าชื่อ ('Alan'); สร้างแถวแล้ว SQL > กระทำ; มุ่งมั่นเสร็จสมบูรณ์ SQL > เลือก * จากชื่อ; NAME ------------------------------ เลือกแถวของ Alan Carrie Tom
วิธีที่ 3 จาก 4: การลบรายการที่ซ้ำกันหลายรายการ
ขั้นตอนที่ 1 เลือก RowID ที่คุณต้องการลบ
หลัง "SQL" ให้พิมพ์ "select rowid, name from names;."
ขั้นตอนที่ 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;" แล้ว "ตกลง" เพื่อตรวจสอบว่าคุณได้ลบระเบียนที่ซ้ำกันเรียบร้อยแล้ว
SQL > เลือก * จากชื่อ; ชื่อ อายุ ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 Alan 50 แถวที่เลือก SQL > ลบออกจากชื่อ a โดยที่ rowid > (เลือก min(rowid) จากชื่อ b โดยที่ b.name=a.name และ b.age=a.age); ลบแถวแล้ว SQL > เลือก * จากชื่อ; ชื่ออายุ ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 แถวที่เลือก. SQL > กระทำ; มุ่งมั่นเสร็จสมบูรณ์
คำเตือน
-
สร้างตารางสำรองในการลงชื่อเข้าใช้ของคุณเอง ซึ่งคุณสามารถใช้เพื่อแสดงสิ่งที่อยู่ที่นั่นก่อนที่จะมีการลบเกิดขึ้น (ในกรณีที่มีคำถามใดๆ)
SQL > สร้างตาราง alan.names_backup เป็น select * จากชื่อ; สร้างตารางแล้ว